解决远程连接MySQL报错:2003 - Can‘t connect to MySQL server on ‘X.X.X.X‘ (10060 “Unknown error“)问题
作者:一水一禾一田
问题
先看报错:
2003 - Can’t connect to MySQL server on ‘X.X.X’ (10060 “Unknown error”)。
意思是服务器远程连接出错:未知错误。
解决方案:
遇到这个问题,首先想到的是权限不够。那咱就给它赋权。
首先登录MySQL数据库:mysql -u用户名 -p密码;
然后:use mysql;
进入数据库后我们先看看mysql user初始的权限表长啥样,输入sql语句:
select Host,User from user;
有结果:
+-----------------------+------+ | Host | User | +-----------------------+------+ | 127.0.0.1 | root | | ::1 | root | | localhost | | | localhost | root | | localhost.localdomain | | | localhost.localdomain | root | +-----------------------+------+ 6 rows in set (0.00 sec)
看到这里就比较明了了,由于我们是远程连接访问mysql,需要开放主机权限。这里我们将127.0.0.1改为%(%表示允许任意的host访问)。输入mysql语句:
UPDATE user SET Host = '%' WHERE Host = '127.0.0.1' AND User = 'root'; flush privileges;
回头看看有没有改成功:
+-----------------------+------+ | Host | User | +-----------------------+------+ | % | root | | ::1 | root | | localhost | | | localhost | root | | localhost.localdomain | | | localhost.localdomain | root | +-----------------------+------+ 6 rows in set (0.00 sec)
好了,权限修改成功了。我们就可以尝试连接数据库了。
是的,你没看错,它还是不成功,问题出在哪呢。想了好久,突然就在一念之间:会不会是防火墙的问题?
于是我尝试关闭防火墙,然后连接,来不及反应,很快呀,直接连接成功。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
现在是连接成功了,但是我关闭防火墙之后又连不了了,咱也并不能永久关闭防火墙吧。
于是我查了查,应该是端口没有开放,导致的连接失败。输入命令:
systemctl start firewalld.service firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload
后面就可以正常连接了。
总结
连接失败是所用主机没有访问远程服务器的权限,这里可以通过修改权限解决。但是在使用MySQL服务前需要开放端口号3306,或者直接关闭防火墙。
到此这篇关于解决远程连接MySQL报错:2003 - Can‘t connect to MySQL server on ‘X.X.X.X‘ (10060 “Unknown error“)问题的文章就介绍到这了,更多相关MySQL报错2003 Can‘t connect to MySQL内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!