远程访问mysql的错误解决方法
远程访问mysql经常会出现下面的一些错误,我用自己经过了一些小波折后找到了一些解决方法,不过我的mysql是转载linux系统上的,不过windows平台也是类似的原理。下面是小编跟大家分享的是远程访问mysql的错误解决方法,欢迎大家来阅读学习~
远程访问mysql的错误解决方法
工具/原料
xshell
mysql
方法/步骤
如果出现下面这种情况,一般是防火墙屏蔽了mysql的3306端口,我们需要开启3306端口
![](http://i1.sanwen.net/doc/1703/1002-1F313150321.jpg)
执行下面的命令
[root@doctortang bin]# /sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
[root@doctortang bin]# /etc/rc.d/init.d/iptables save
[root@doctortang bin]# /etc/init.d/iptables restart
![](http://i1.sanwen.net/doc/1703/1002-1F313150320.jpg)
如果执行查看防火墙状态的命令:
[root@doctortang bin]# /etc/init.d/iptables status
会出现下面情况则说明开启3306端口成功了(就是下面图中的3306)
![](http://i1.sanwen.net/doc/1703/1002-1F313150319.jpg)
此时再访问有可能会遇到下面这种图的报错,这是因为我们还没给mysql设置一个可以让我们从我们当前ip远程访问的用户及密码(我自己的本地ip为192.168.1.140)
![](http://i1.sanwen.net/doc/1703/1002-1F313150318-50.jpg)
现在假设你想让用户名为root的用户从ip为192.168.1.140的主机连接到mysql服务器,并使用123456作为密码,可以执行下面的命令(为了使修改立即生效,可多次执行FLUSH PRIVILEGES命令,我这里执行了两次)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.140' IDENTIFIED BY
-> '123456' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> FLUSH PRIVILEGES;
![](http://i1.sanwen.net/doc/1703/1002-1F313150318.jpg)
6此时再以用户名root,密码123456去访问mysql就可以了
7这里说多两种我试过的适合其他情况的设置,第一种就是如果想任何主机都能以用户名为root,密码为123456都能访问mysql,可以执行下面命令
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
![](http://i1.sanwen.net/doc/1703/1002-1F313150317.jpg)
8然后让修改生效
mysql> FLUSH PRIVILEGES;
这样就可以在其它任何的主机上以用户名root和密码123456远程访问mysql了
9另一种是如果只想用户root从ip为192.168.1.6的主机只能访问其中某一个数据库名为db,并使用123456作为密码,可以执行命令
mysql>GRANT ALL PRIVILEGES ON db.* TO 'root'@'192.168.1.3' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES;