在mysql远程连接时出现ERROR 2003错误的很多种,下面我来给大家介绍两种解决此问题的方法,有需要的同学可参考.
问题代码:
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.0.19' (111)
这个原因就是Mysql数据库的默认配置文件my.cnf(linux下)中的bind-address默认为127.0.0.1,所以就算你创建了可以 remote访问的用户,你也不能使用mysql -h命令进行访问,若访问就会出现上出问题,因为此时Mysql只接受localhost,所以需要把bind-address屏蔽掉.
my.cnf一般在/etc/mysql下面,如果不在使用locate my.cnf查找,修改前的my.cnf配置文件为,修改前的my.cnf配置文件代码:
- #
- #Insteadofskip-networkingthedefaultisnowtolistenonlyon
- #localhostwhichismorecompatibleandisnotlesssecure.
- bind-address=127.0.0.1
- #
- #Insteadofskip-networkingthedefaultisnowtolistenonlyon
- #localhostwhichismorecompatibleandisnotlesssecure.
- bind-address=127.0.0.1
我们需要做的就是屏蔽这个bind-address代码.屏蔽后代码为,屏蔽后my.cnf配置文件代码:
- #
- #Insteadofskip-networkingthedefaultisnowtolistenonlyon
- #localhostwhichismorecompatibleandisnotlesssecure.
- #bind-address=127.0.0.1
- #--phpfensi.com
- #Insteadofskip-networkingthedefaultisnowtolistenonlyon
- #localhostwhichismorecompatibleandisnotlesssecure.
- #bind-address=127.0.0.1
现在你就可以用mysql -h命令进行你想做的操作了,如登录系统,登陆数据库代码:
mysql -h 192.168.0.19 -u root -p
如果上面还不能解决可能是防火墙的问题了.
1.mysql 错误 ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost'
解决办法:关闭防火墙,linux下命令:
- [root@etl01bin]#chkconfig--list|grep-iiptables====checkfirewall
- iptables0:off1:off2:on3:on4:on5:on6:off
- [root@etl01bin]#/sbin/serviceiptablesstop====stopfirewall
- Flushingfirewallrules:[OK]
- SettingchainstopolicyACCEPT:natfilter[OK]
- Unloadingiptablesmodules:[OK]
2.报错:1130-host ... is not allowed to connect to this MySql server
解决办法:
授权形式,比如账户为root,密码为root:use mysql;用root账户从任何主机上访问mysql数据库了,GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
如果你想允许用户zz从ip为192.168.1.3的主机连接到mysql服务器,并使用123456作为密码:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY '123456' WITH GRANT OPTION;