远程连接MySQL的时候报错1130 2003无法连接的解决方法

  •   
  • 4216
  • MySQL
  • 4
  • super_dodo
  • 2014/01/04

通常在开发中很多时候需要使用工具直接连接到服务器上的数据库进行一些操作。常用的工具比如Navicat for MySQL

新装的MySQL用Navicat连接远程MYSQL,若错误信息"2003 Can't connect to MySQL server on '192.168.1.3' "请检查服务器的MySQL3306端口在防火墙中是否打开了。
开启3306端口的方法见: CentOS配置WEB服务时关于防火墙,开启80端口\3306端口

若防火墙关了或者确认3306端口已打开了,依然不行。提示如下错误"Navicat for mysql 1130错误...."

2003 Can't connect to MySQL server on '192.168.1.3' #检查防火墙和端口
ERROR 1130: Host '192.168.1.3' is not allowed to connect to this MySQL server #检查权限
//例如,用户名是root 密码123456

1.改表法:可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改"mysql" 数据库里的 "user" 表里的 "host"项,从"localhost"改成"%"

mysql -u root -p123456
mysql>use mysql;
mysql>update user set host = '%' where user ='root';	//安全性
mysql>flush privileges; 
//测试一下连接若还是无法连接。则重启一下mysql 'service mysqld restart'
//说明:这语句对于安全性比较差.若只需要内网的IP访问的话。可对应替换下面的语句
mysql>update user set host = '192.168.%' where user ='root';

2.授权法:给用户授权
例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。
错误代码是1130,ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to connect to this MySQL server 是无法给远程连接的用户权限问题

//Sql代码A
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

//Sql代码B
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.%' IDENTIFIED BY '123456' WITH GRANT OPTION;

执行完后,再刷新一下权限就可以了,不用重启  
mysql>flush privileges; 

windows下的完整操作:

开始->运行->cmd 
cd mysql安装目录\bin 
mysql -u root -p123456; 
mysql GRANT ALL PRIVILEGES ON *.* TO 'dbtest'@'192.168.127.129' IDENTIFIED BY '123456' WITH GRANT OPTION; 
mysql flush privileges;

备注:MySQL的安全性至关重要,当产品上线之后,应严格了解MySQL的安全,给不同的用户分配不同的权限,针对不同的IP或网段开放不同的权限.

Every story has an end. But in life, every ending is just a new beginning…所有的故事,都有个结局。但幸运的是,我们的生活中,每个结局会变成一个新的开始。