一、目的
安装msql,并设置可以远程访问,使用Navicate数据库管理软件进行mysql数据库管理。
二、Linux虚拟机安装mysql并设置允许远程访问
1.查看知否已有MySQL
输入:yum list installed | grep mysql
2.卸载自带的MySQL
输入:yum -y remove mysql-libs.x86_64,若有多个依赖文件则依次卸载。
当结果显示为Complete!即卸载完毕。卸载之后要清理干净,清理目录。
3.查看yum库上的mysql版本信息。
输入:yum list | grep mysql 或 yum -y list mysql*
4.使用yum安装mysql数据库。
输入:yum -y install mysql-server mysql mysql-devel ,命令将:mysql-server、mysql、mysql-devel都安装好,当结果显示为“Complete!”即安装完毕。
5.查看刚安装mysql数据库版本信息。
输入:rpm -qi mysql-server
6.启动MySQL
service mysqld start
7.设置密码
update user set password=passworD("pingce123") where user="root";
flush privileges;
7.5在linux系统上登陆mysql服务。
-- root 是用户名
[root@localhost ~]# mysql -u root -p
Enter password: -- 输入密码
8.设置远程连接
将host设置为%表示任何ip都能连接mysql,当然您也可以将host指定为某个ip
update user set host='%' where user='root' and host='localhost';
flush privileges; #刷新权限表,使配置生效
然后我们就能远程连接我们的mysql了。
原文:
创建远程连接 MySQL 的用户:
8.5 给访问mysql数据库的用户权限
-- 创建用户、密码及权限范围 第一个 roo t为用户名 @后为适用的主机,‘%’表示所有电脑都可以访问连接,第二个 root 为密码
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.0.2' IDENTIFIED BY 'root' WITH GRANT OPTION;
Query OK, 0 rows affected (1.57 sec)
-- 立即生效
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
9.退出mysql命令行模式之后,开启虚拟机外部访问的端口。设置防火墙开放3306端口或者关闭防火墙
防火墙开放3306端口
防火墙开放3306端口:
1)打开防火墙配置文件
vi /etc/sysconfig/iptables
2)增加下面一行
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
3)重启防火墙
service iptables restart
注意:增加的开放3306端口的语句一定要在icmp-host-prohibited之前
关闭防火墙:
1) 永久性生效
开启:chkconfig iptables on
关闭:chkconfig iptables off
2)即时生效,重启后失效
开启:service iptables start
关闭:service iptables stop
需要说明的是对于 Linux 下的其它服务都可以用以上命令执行开启和关闭操作
10.启动mysqld服务,启动mysql数据库
service mysqld start;
关闭为:service mysqld stop;
有用文章:
三、在虚拟机之外的本地计算机检查虚拟机端口是否已经开放
linux运维都需要对端口开放查看 netstat 就是对端口信息的查看
# netstat -nltp
p 查看端口挂的程序
[root@iz2ze5is23zeo1ipvn65aiz ~]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3346/nginx: master
tcp 0 0 127.0.0.1:8081 0.0.0.0:* LISTEN 2493/docker-proxy-c
tcp 0 0 127.0.0.1:8082 0.0.0.0:* LISTEN 5529/docker-proxy-c
tcp 0 0 127.0.0.1:8083 0.0.0.0:* LISTEN 17762/docker-proxy-
tcp 0 0 127.0.0.1:8084 0.0.0.0:* LISTEN 2743/docker-proxy-c
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2155/sshd
看到 查询的有Local、Address、Foregin、Program name
Local :访问端口的方式,0.0.0.0 是对外开放端口,说明80端口外面可以访问;127.0.0.1 说明只能对本机访问,外面访问不了此端口;
Address:端口
Foregin Address:对外开放,一般都为0.0.0.0:*
Program name:此端口是那个程序在用,程序挂载此端口
重点说明 0.0.0.0 是对外开放,通过服务域名、ip可以访问的端口
127.0.0.1 只能对本机 localhost访问,也是保护此端口安全性
::: 这三个: 的前两个”::“,是“0:0:0:0:0:0:0:0”的缩写,相当于IPv6的“0.0.0.0”,就是本机的所有IPv6地址,第三个:是IP和端口的分隔符
四、Navicat连接mysql
使用ifconfig查看虚拟机的ip,然后填入navicat,连接数据库即可。
五、补充
如果开放了mysql远程连接以及用户的昂问权限,并且关闭了防火墙,依旧无法访问。问题就出在虚拟机的网络上。根据下面的四种网络连接方式的学习,可以知道如果虚拟机使用的是桥接模式,那么需要配置3306端口映射,才能让navicate连接上mysql。
VirtualBox中有4中网络连接方式:
- NAT
- Bridged Adapter
- Internal
- Host-only Adapter
VMWare中有三种,其实他跟VMWare 的网络连接方式都是一样概念,只是比VMWare多了Internal方式。
要让自己(或别人)理解深刻,方法就是做比较和打比方,比较之间的不同和相同,拿熟知的事物打比方。先来一张图,通过这张图就很容易看出这4种方式的区别:
再来用文字做详细的解释(其实归结起来就是上面的那张图):
1、NAT
NAT:Network Address Translation,网络地址转换
NAT模式是最简单的实现虚拟机上网的方式,你可以这样理解:
Guest访问网络的所有数据都是由主机提供的,Guest并不真实存在于网络中,主机与网络中的任何机器都不能查看和访问到Guest的存在。
Guest可以访问主机能访问到的所有网络,但是对于主机以及主机网络上的其他机器,Guest又是不可见的,甚至主机也访问不到Guest。
虚拟机与主机的关系:只能单向访问,虚拟机可以通过网络访问到主机,主机无法通过网络访问到虚拟机。
虚拟机与网络中其他主机的关系:只能单向访问,虚拟机可以访问到网络中其他主机,其他主机不能通过网络访问到虚拟机。
虚拟机与虚拟机的关系:相互不能访问,虚拟机与虚拟机各自完全独立,相互间无法通过网络访问彼此。
2、Bridged Adapter(网桥模式)
网桥模式,你可以这样理解:
它是通过主机网卡,架设了一条桥,直接连入到网络中了。因此,它使得虚拟机能被分配到一个网络中独立的IP,所有网络功能完全和在网络中的真实机器一样。
网桥模式下的虚拟机,你把它认为是真实计算机就行了。
虚拟机与主机的关系:可以相互访问,因为虚拟机在真实网络段中有独立IP,主机与虚拟机处于同一网络段中,彼此可以通过各自IP相互访问。
虚拟机于网络中其他主机的关系:可以相互访问,同样因为虚拟机在真实网络段中有独立IP,虚拟机与所有网络其他主机处于同一网络段中,彼此可以通过各自IP相互访问。
虚拟机与虚拟机的关系:可以相互访问,原因同上。
3、Internal(内网模式)
内网模式,顾名思义就是内部网络模式:
虚拟机与外网完全断开,只实现虚拟机于虚拟机之间的内部网络模式。
虚拟机与主机的关系:不能相互访问,彼此不属于同一个网络,无法相互访问。
虚拟机与网络中其他主机的关系:不能相互访问,理由同上。
虚拟机与虚拟机的关系:可以相互访问,前提是在设置网络时,两台虚拟机设置同一网络名称。如上配置图中,名称为intnet。
4、Host-only Adapter(主机模式)
主机模式,这是一种比较复杂的模式,需要有比较扎实的网络基础知识才能玩转。可以说前面几种模式所实现的功能,在这种模式下,通过虚拟机及网卡的设置都可以被实现。
我们可以理解为Guest在主机中模拟出一张专供虚拟机使用的网卡,所有虚拟机都是连接到该网卡上的,我们可以通过设置这张网卡来实现上网及其他很多功能,比如(网卡共享、网卡桥接等)。
虚拟机与主机的关系:默认不能相互访问,双方不属于同一IP段,host-only网卡默认IP段为192.168.56.X 子网掩码为255.255.255.0,后面的虚拟机被分配到的也都是这个网段。通过网卡共享、网卡桥接等,可以实现虚拟机于主机相互访问。
虚拟机与网络主机的关系:默认不能相互访问,原因同上,通过设置,可以实现相互访问。
虚拟机与虚拟机的关系:默认可以相互访问,都是同处于一个网段。
关于这几种连接方式,理解VMWare的三种网络连接模式(bridged、NAT、host-only)里的解释只是换了文字来表述,虽然显得重复,但为了理解,干脆就写成了这两篇Blog。
Update:我刚装上VirtualBox的时候所有的网络连接方式都试过了,但虚拟机和虚拟机之间就是不能 相互访问,Ping都Ping不通,我在想难道VirtualBox的网络设置有这么复杂吗,后来想到是不是Windows XP的防火墙的问题,关闭之,一切就正常了,Fuck!
参考资料:
- VirtualBox四种网络连接模式比较
- (转)VirtualBox网络设置与应用详解(图解+文字
VMware支持三种类型的网络:NAT,Bridged,Host-only。
NAT
这种方式下,虚拟机的网卡连接到宿主的 VMnet8 上。此时系统的 VMWare NAT Service 服务就充当了路由器的作用,负责将虚拟机发到 VMnet8 的包进行地址转换之后发到实际的网络上,再将实际网络上返回的包进行地址转换后通过 VMnet8 发送给虚拟机。VMWare DHCP Service 负责为虚拟机提供 DHCP 服务。
Bridged
这种方式下,虚拟机就像一台真正的计算机一样,直接连接到实际的网络上,与宿主机没有任何联系。
Host-only
这种方式下,虚拟机的网卡连接到宿主的 VMnet1 上,但系统并不为虚拟机提供任何路由服务,因此虚拟机只能和宿主机进行通信,而不能连接到实际网络上。