1.问题产生原因 :mysql默认只支持本地连接
1 2 3 4 5 6 7 8 9 10 11 12 |
用命令查看mysql库中user表的host和user信息 select host, user from mysql.user; -----------+------------------+ | host | user | +-----------+------------------+ | locathost | root | | localhost | mysql.infoschema | | localhost | mysql.session | | localhost | mysql.sys | +-----------+------------------+ 可看出root对应的host 为localhost,只支持本地连接 |
2.解决方案:放开远程连接权限
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
法一: 修改表结构:‘%’表示允许来自所有地址的连接,然后重启mysql update mysql.user set host='%' where user='root'; 执行完之后用命令查看mysql库中user表的host和user信息 select host, user from mysql.user; -----------+------------------+ | host | user | +-----------+------------------+ | % | root | | localhost | mysql.infoschema | | localhost | mysql.session | | localhost | mysql.sys | +-----------+------------------+ 可看出root对应的host 为所有地址可连接 法二: 手动授权: 例如允许testuser用户用testpassword密码在任意位置远程连接任意的库和表,执行完可以刷新或者重启即可 GRANT ALL PRIVILEGES ON *.* TO 'testuser'@'%' IDENTIFIED BY 'testpassword' WITH GRANT OPTION; FLUSH PRIVILEGES; 可以用具体的 库名和表名 替换通配符 *.* 可以用具体的 地址 替换通配符 % |