关于在Windows系统下使用远程链接去连接虚拟机或者远程的数据库的连接失败问题。
一下操作都需要在虚拟机或者远程服务器可以联网的情况下。
首先可以使用
#netstat -ntpl
//--line-number 使用该蚕食可以查看到规则的行号
在虚拟机或者远程服务器中查看网络端口信息
如果3306的端口号没打开,则可以使用以下命令将其打开:
#iptables -A INPUT -ptcp --dport 端口号 -j ACCEPT //打开端口(添加规则)
#service iptables restart //重启iptables
另附关闭端口:
#iptables -A INPUT -ptcp --dport 端口号 -j DROP //关闭端口
之后查看防火墙的状态:
#iptables -vnL
从此可以看到,3306端口的数据包都是丢弃状态,在此,可以清除防火墙中的规则
#iptables -F
或者关闭防火墙,另附防火墙打开和关闭方法:
#chkconfig iptables on //开启,重启后生效
#chkconfig iptables off //关闭,重启后生效
#service iptables start //开启,立即生效
#service iptables stop //关闭,立即生效
之后使用Navicat远程连接了一下MySQL,但出现了一下错误:
这是因为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,连接测试如下图
另外:主机名或IP地址那一栏写的是被连接的服务器地址,如果是虚拟机则是虚拟机的地址