navicat 远程连接 mysql 服务器报错 - 错误码:10038
前言
对于 MySQL 的 10038 错误,我是从一开始的懵逼到之后越来越熟悉,恰如一句老话 “久病成良医”。经常会遇到这个错误,一开始没有任何解决方案,只能百度。后来慢慢地掌握了解决的技巧。
解决方案
1. 绑定地址错误
查看 3306 端口进程
netstat -anp | grep 3306
0.0.0.0 表示监听本地所有 ip 地址,其他电脑是可以访问的,并且修改 ip 不受影响。 127.0.0.1 表示只监听本机回环地址,只能本机访问。x.x.x.x 具体 ip 地址,是只监听这个 ip。修改 ip 后程序就不能监听了,需要手动修改软件监听地址才可以用。
这里 3306 端口写的是 ip 地址:127.0.0.1
,故只有本机能够访问;将其修改成 0.0.0.0
即可
解决办法:
命令
5.6 及以下
# find / -name my.cnf
5.7 及以上
# find / -name mysqld.cnf
pathlist(显示文件地址列表)
# vim path/to/my.cnf
修改:bind-address = 127.0.0.1 -> bind-address = 0.0.0.0
或注释掉
2. 权限不够,查看用户权限(连接的用户名此处为root),然后修改权限,重启服务,再次连接:
show grant for someuser@'%';
GRANT ALL PRIVILEGES ON *.* TO 'someuser'@'%' IDENTIFIED BY PASSWORD 'SSS' WHITH OPTION
3. 服务商安全组未开通 3306 端口
如腾讯云,默认开通的端口中中不包括 MySQL 的 3306 端口
修改安全组中实例应用的安全规则,添加 TCP:3306。
[notice]
修改安全组规则后,如果仍然无权限,可以尝试在服务商后台重新启动服务器。
[/notice]