解决mysql无法远程连接问题
远程连接mysql数据库时出现如下提示信息:“MYSQL CONNECT ERROR – 1130:Host ’202.43.**.**’ is not allowed to connect to this MySQL server”
原来在创建mysql账户是,限制连接账户远程登录。也就是说,除了当前mysql所在的安装服务器外,其他的ip(主机)都是不允许访问的,尽管你的用户名和密码是正确的。
知道了问题的原因,下面就来解决问题。
首先需要登录到mysql的安装主机,然后进入mysql:
mysql/usr/local/mysql/bin mysql -u root -p
回车
root是mysql的最高授权用户名,这时会提示你输入密码,正确输入密码后回车,进入mysql。
然后输入如下命令:
grant all on 数据库名.* to ‘数据库账户名’@'%’ identified by ‘密码’ with grant option;
回车
flush privileges;
回车
注意:上面的单引号不能省,数据库名.* 表示要开放的数据库下所有表,如果该连接的所有数据库都要开放,可以用 *.* 代替。
‘数据库账户名’@'%’ 这里表示要开放的账户,百分号表示在任何主机都允许访问。
如果以上两步均显示 “Query OK, 0 rows affected (0.00 sec)”,那么说明命令已经成功执行,现在就可以远程连接你的mysql数据库了。
另外,也有可能是你的mysql安装时默认绑定了固定的ip地址: bind-address : 127.0.0.1。具体操作是:到 /etc/mysql/my.cnf (注:这里是linux系统)文件中,找到 bind-address 这一行,将它注释掉,并重启mysql,就可以远程访问了。
补充:利用工具来改表
1。改表法。
请使用mysql管理工具,如:SQLyog Enterprise
可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑使用mysql管理工具登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"
2. 授权法。
A:你想mysql账户myuser使用密码mypassword从任何主机连接到mysql服务器的话,那就在mySQL命令行下输入:
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
若上面那条命令还没有奏效,那就使用下面的命令,一定成功!
如果你想允许想mysql账户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码,那就在mySQL命令行下输入:
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
如果改表加权限不行我们可尝试下面的方法
编辑my.ini
在[mysqld]节点下新增或修改如下两行行
skip-name-resolve #忽略主机名的方式访问
lower_case_table_names=1 #忽略数据库表名大小写
修改后,重启mysql即可。