【MySQL】Windows下用Navicat远程链接虚拟机Linux下MySQL数据库

关于在Windows系统下使用远程链接去连接虚拟机或者远程的数据库的连接失败问题。
一下操作都需要在虚拟机或者远程服务器可以联网的情况下。
首先可以使用

#netstat -ntpl
//--line-number 使用该蚕食可以查看到规则的行号

在虚拟机或者远程服务器中查看网络端口信息

【MySQL】Windows下用Navicat远程链接虚拟机Linux下MySQL数据库_第1张图片
image.png

如果3306的端口号没打开,则可以使用以下命令将其打开:

#iptables -A INPUT -ptcp --dport 端口号 -j ACCEPT  //打开端口(添加规则)
#service iptables restart //重启iptables

另附关闭端口:

#iptables -A INPUT -ptcp --dport 端口号 -j DROP  //关闭端口

之后查看防火墙的状态:

#iptables -vnL
【MySQL】Windows下用Navicat远程链接虚拟机Linux下MySQL数据库_第2张图片
image.png

从此可以看到,3306端口的数据包都是丢弃状态,在此,可以清除防火墙中的规则

#iptables -F

或者关闭防火墙,另附防火墙打开和关闭方法:

#chkconfig iptables on //开启,重启后生效
#chkconfig iptables off //关闭,重启后生效
#service iptables start //开启,立即生效
#service iptables stop //关闭,立即生效

之后使用Navicat远程连接了一下MySQL,但出现了一下错误:

【MySQL】Windows下用Navicat远程链接虚拟机Linux下MySQL数据库_第3张图片
image.png

这是因为MySQL没有允许远程登录,所以要在MySQL中授权远程登录
首先登录进入到MySQL:

#mysql -h主机地址 -u用户名-p用户密码

手动增加可以远程访问数据库的用户。
方法一、本地登入mysql,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,将"localhost"改为"%"

#mysql -u root -proot
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;

方法二、直接授权(推荐)
从任何主机上使用root用户,密码:youpassword(你的root密码)连接到mysql服务器:

#mysql -u root -proot 
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;

操作完后需要刷新权限:

FLUSH PRIVILEGES;

这时候再使用Navicat进行远程连接MySQL,连接测试如下图

【MySQL】Windows下用Navicat远程链接虚拟机Linux下MySQL数据库_第4张图片
image.png

另外:主机名或IP地址那一栏写的是被连接的服务器地址,如果是虚拟机则是虚拟机的地址

你可能感兴趣的:(【MySQL】Windows下用Navicat远程链接虚拟机Linux下MySQL数据库)