mysql服务可能未真正运行,需用ps或netstat确认进程和端口监听,查错误日志定位启动失败原因;注意localhost与127.0.0.1账号区别、权限配置、防火墙、bind-address及ssl强制要求等常见问题。

检查 MySQL 服务是否真正运行
很多“连不上”的问题其实根本没走到网络或权限环节,MySQL 进程压根没起来。systemctl status mysql(Linux)或 services.msc(Windows)里看到“running”不等于 MySQL 实例在监听——它可能启动失败后自动退出。用 ps aux | grep mysqld 或 netstat -tlnp | grep :3306 确认进程存在且绑定了端口。如果端口没占,去查错误日志:/var/log/mysql/error.log 或 mysqld --verbose --help | grep "default-character-set" 附近常有启动失败线索。
确认连接地址、端口和用户权限是否匹配
本地用 localhost 和 127.0.0.1 在 MySQL 里是两种账号:user@localhost ≠ user@127.0.0.1,前者走 socket,后者走 TCP。远程连接失败时,先用 mysql -h 127.0.0.1 -u root -p 测试能否绕过 socket;再查权限:SELECT host, user FROM mysql.user;,确保对应 host 列不是 localhost(除非你真在本机用 TCP 连)。常见坑:CREATE USER 'foo'@'%' IDENTIFIED BY 'bar'; 后忘了 GRANT ALL ON *.* TO 'foo'@'%'; FLUSH PRIVILEGES;。
防火墙和 bind-address 配置拦截了连接
Linux 上 ufw status 或 iptables -L -n 可能拦了 3306;Windows 防火墙默认也封外网入站。更隐蔽的是 MySQL 自身配置:bind-address 默认可能是 127.0.0.1 或 localhost,导致只接受本地连接。改配置文件(/etc/mysql/mysql.conf.d/mysqld.cnf 或 C:\ProgramData\MySQL\MySQL Server X.X\my.ini)里的 bind-address = 0.0.0.0 后必须重启服务,且要确认 skip-networking 没被启用。
在原版的基础上做了一下修正评论没有提交正文的问题特价商品的调用连接问题去掉了一个后门补了SQL注入补了一个过滤漏洞浮动价不能删除的问题不能够搜索问题收藏时放入购物车时出错点放入购物车弹出2个窗口修正主题添加问题商家注册页导航连接问题销售排行不能显示更多问题热点商品不能显示更多问题增加了服务器探测 增加了空间使用查看 增加了在线文件编辑增加了后台管理里两处全选功能更新说明:后台的部分功能已经改过前台
SSL 强制导致客户端握手失败
MySQL 8.0+ 新建用户默认 REQUIRE SSL,但多数客户端(如 Navicat、Python 的 pymysql)不带证书就直接报 SSL connection error: protocol error 或静默断连。临时解决:登录 MySQL 后执行 ALTER USER 'your_user'@'%' REQUIRE NONE;;长期方案是在连接字符串里加 ssl_disabled=true(pymysql)或 "ssl-mode=DISABLED"(mysql CLI)。注意:生产环境不应禁用 SSL,而是配好 CA 和 client cert。
真实环境里,这几个点经常叠加出现——比如改了 bind-address 却忘了开防火墙,或者授权用了 @'192.168.%' 但客户端 IP 是 192.168.10.5 而服务器实际在 192.168.5.10 网段。抓包看三次握手是否完成(tcpdump -i any port 3306),比反复试密码更省时间。









