最近新购了一台电脑,现在要用新电脑访问旧电脑的数据库,结果悲剧了,连接不上:2003-can t connect to MySQL server on ip(10060 ‘unknow error’),
原因查找:
由于旧电脑装了MySQL5.7 和 MySQL8.0,两个数据库的访问端口分别为3306、3307,因此进入MySQL的cmd命令不能使用:mysql -h127.0.0.1 -uroot -p ,而是:mysql -P3307 -uroot -p,
进入MySQL之后:use mysql;
然后:show tables; 会发现有一个user表
查一下user表:select host,user from user;
host | user |
localhost | root |
发现问题了,原来mysql 8.0 默认user字段为root的对应的host字段是localhost,代表着,root账号只能在本机登录,无法远程登陆
解决方法:
执行命令:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
执行刷新:FLUSH PRIVILEGES;
'root'@'%' 中,root表示授权的用户,%代表所有ip
再查一下user表:select host,user from user;
host | user |
% | root |
这时host已经改成了%,允许所有ip来访问
问题解决了吗,如果没有的话,那可能还要看看防火墙是否开放3307端口,
去往 控制面板\Windows Defender 防火墙
一、打开高级设置
二、点击入站规则,新建规则,选择“端口”,下一步
三、选择 TCP,特定本地端口,填入MySQL的端口,默认是3306,下一步。
四、允许连接
五、全勾选
六、最后输入名称,完成即可
再次连接,问题解决。