windows下mysql管理神器navicat远程登录MySQL时提示无法链接,除了排除防火墙是否开放3306端口外,就需要检查授权是否正确。

默认的账号的host属性都是localhost,意思是这个账号只能本地使用,如果要使用某个账号来远程登录,必须将账号的host属性值更改成%。

允许所有IP访问

当你远程登录MySQL时,使用的账号要有特殊要求。

默认的账号的host属性都是localhost,意思是这个账号只能本地使用,如果要使用某个账号来远程登录,必须将账号的host属性值更改成%。

a,进入数据库:

1
mysql -u root -p

b,切换到 mysql库:

1
use mysql;

c,查看用户表,看到当前host是localhost,只允许本地访问。

1
2
3
4
5
6
7
8
9
10
MySQL [mysql]> select host,user from user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| 127.0.0.1 | root |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
4 rows in set (0.00 sec)

d,更新user用户表:

1
mysql> update user set host = '%' where user = 'root';

e,强制刷新权限:

1
mysql> flush privileges;

f,再次查看用户表,root用户的host变成%,即允许所有的ip远程访问,如果需要指定具体的ip,就写上具体的ip即可。

1
2
3
4
5
6
7
8
9
10
MySQL [mysql]> select host,user from user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| % | root |
| 127.0.0.1 | root |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+---------------+
4 rows in set (0.00 sec)

执行的sql语句如下:

1
update user set host = '%' where user = 'root';