前言

对于 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]