错误原因
image.png
本地IP(xxx.xxx.xxx.xxx)没有访问远程数据库的权限。
解决方案之一:授权法
开启本地IP(xxx.xxx.xxx.xxx)对远程mysql数据库的访问权限。
进入mysql命令行:mysql -u root -p
选择mysql数据库:use mysql;
输入select user,password,host from user;
可以看到host中只有localhost主机。我们需要将xxx.xxx.xxx.xxx也添加到这里才对。
image.png
相当于是给IP-xxx.xxx.xxx.xxx赋予了所有的权限,包括远程访问权限。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.16.20.30' IDENTIFIED BY 'root' WITH GRANT OPTION;
重新加载mysql权限
flush privileges;
再次输入select user,password,host from user; 可以看到host中已经有了新加的IP。
image.png
再次用Navicat for MySQl访问远程mysql数据库,已经能正常打开了。
解决方案之二:改表法
你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"
mysql -u root -p
use mysql;
select user,password,host from user; 查看mysql库中的user表的host值(即可进行连接访问的主机/IP名称)
update user set host = '%' where user ='root' limit 1; 修改host值(以通配符%的内容增加主机/IP地址),当然也可以直接增加IP地址
flush privileges; 刷新MySQL的系统权限相关表
select user,password,host from user;