MySQL连接拒绝首要排查mysqld是否监听3306端口,再检查bind_address配置、用户host权限、systemd服务状态、防火墙规则顺序及云安全组设置。

MySQL连接拒绝:先确认mysqld是否真在监听端口
连接被拒绝(ERROR 2003 (HY000): Can't connect to MySQL server on 'x.x.x.x' (111))最常见原因不是防火墙,而是mysqld压根没起来,或根本没绑定到你尝试连接的地址和端口。
别急着关防火墙——先登录服务器执行:
sudo netstat -tlnp | grep :3306
如果没输出,说明mysqld没监听3306;如果只看到127.0.0.1:3306而你从远程连,那是因为bind_address配置成了127.0.0.1或localhost(后者在某些系统上等价于127.0.0.1)。
-
bind_address在/etc/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf中,设为0.0.0.0才允许远程连接(生产环境需配合授权与防火墙) - 改完必须重启服务:
sudo systemctl restart mysql(Ubuntu/Debian)或sudo systemctl restart mysqld(CentOS/RHEL) - 检查错误日志定位启动失败原因:
sudo tail -20 /var/log/mysql/error.log或/var/log/mysqld.log
telnet或nc能通但mysql -h连不上?检查用户host权限
端口通了,mysql -h x.x.x.x -u user -p仍报错Access denied,大概率是账号权限问题。MySQL认证不仅看密码,更严格校验user@host组合。
登录本地mysql -u root -p后查:
SELECT user, host FROM mysql.user WHERE user = 'your_user';
如果结果里host是localhost,那它只能从本机socket连接,无法响应TCP请求。
- 远程访问需显式授权,例如:
CREATE USER 'app'@'10.10.20.%' IDENTIFIED BY 'pwd';或GRANT ALL ON db.* TO 'app'@'%'; - 执行
FLUSH PRIVILEGES;生效(但注意:8.0+多数情况不需要) -
%不匹配localhost,也不匹配IPv6的::1;如需本机TCP连,单独加'user'@'127.0.0.1'
systemd启动失败导致端口未监听:检查socket激活与依赖服务
有些MySQL部署启用了socket activation(比如mysqld.socket),或依赖network.target。若网络未就绪、或systemd认为前置服务失败,mysqld.service可能静默跳过启动。
运行以下命令确认真实状态:
sudo systemctl status mysqld<br>sudo systemctl list-dependencies --reverse mysqld.service
常见陷阱:
-
mysqld.service被mysqld.socket接管,但socket未触发(比如没人连3306)→ 查sudo systemctl status mysqld.socket - 配置文件语法错误导致启动退出,
systemctl status只显示failed,要盯journalctl -u mysqld -n 50 --no-pager - 磁盘满、
datadir权限不对、SELinux拦截(CentOS)也会让服务起不来,但错误日志里才有线索
iptables/nftables放行了3306,还是连不上?检查INPUT链默认策略
很多人加了iptables -A INPUT -p tcp --dport 3306 -j ACCEPT就以为完事,但若INPUT链默认策略是DROP,且这条规则位置靠后,前面已有REJECT或DROP规则,请求会在到达你的ACCEPT前就被拦下。
查规则顺序和默认策略:
sudo iptables -L INPUT -n --line-numbers<br>sudo iptables -S INPUT
关键点:
- 确保
ACCEPT规则在所有REJECT/DROP之前(用-I INPUT 1插入顶部) - 云服务器(阿里云/腾讯云)的安全组是第一道墙,比系统防火墙更优先,务必同步检查
- CentOS 8+默认用
nftables,iptables命令可能不生效;查sudo nft list ruleset
生产环境别裸开0.0.0.0/0,按应用服务器IP段精确放行,3306暴露在公网等于邀请扫描器爆破。


















