MySQL连接失败时,需依次排查服务状态、账号密码、连接地址和用户权限。检查服务是否运行,验证用户名密码是否正确,确认连接地址与端口配置,并确保用户权限的host字段匹配连接来源。
MySQL连接失败时,排查其实有章可循。服务状态、账号密码、连接地址、用户权限——这四个环节逐一检查,大概率能找到问题所在。下面直接进入正题,看看每一步该如何操作。

长期稳定更新的攒劲资源: >>>点此立即查看<<<
打开终端或命令提示符,执行 systemctl status mysql(Linux)或 net start | findstr MySQL(Windows)。如果显示“inactive (dead)”或无法找到MySQL服务名,基本可以断定服务没有启动。此时不要急于尝试登录——进程未启动,任何客户端连接都会立即报错“Connection refused”。
启动服务很简单:Linux下使用 sudo systemctl start mysql,Windows则在服务管理器中右键“MySQL80”选择“启动”。启动前务必确认my.cnf或my.ini中配置的端口没有被其他程序占用,否则服务也可能启动失败。
先尝试本地免密登录,用于验证基础可用性:执行 mysql -u root -p,然后直接回车(如果原本设置的是空密码)或输入当前密码。如果密码忘记,则需走另一条路径:先停止服务,在配置文件中添加 skip-grant-tables,重启服务,登录后执行 ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';,最后删除该配置项并重启服务。
需要特别注意:远程连接时,必须使用 '用户名'@'%' 或具体的IP地址来创建用户,如果只创建了 'root'@'localhost',则外部无论如何都无法连接。
首先确认客户端连接时填写的host是否正确——到底是127.0.0.1(本地环回),还是真实的服务器IP。不要误填为localhost,因为某些系统下localhost会走socket文件而非TCP,而许多检测工具默认走TCP通路。
接着,查询MySQL实际监听的端口:登录MySQL后执行 SHOW VARIABLES LIKE 'port';,默认是3306,但可能被修改过。最后使用 telnet 127.0.0.1 3306 测试端口连通性。如果不通,问题可能出在防火墙拦截、bind-address设置为127.0.0.1导致外网不可达,或云服务器安全组未放行该端口。
bind-address参数在my.cnf中默认可能是127.0.0.1,若要允许远程连接,需改为0.0.0.0或具体内网IP,修改后必须重启MySQL服务才能生效。
登录MySQL后,执行 SELECT host,user,authentication_string FROM mysql.user;,重点查看要连接的用户名对应的host字段值。如果host为localhost,则只能本机使用socket连接;如果是192.168.1.%,则只能从该网段IP连接;只有%才代表任意主机(包括远程)。
如果host不匹配,则新建一个用户,例如 CREATE USER 'test'@'%' IDENTIFIED BY 'pwd123';,然后授权 GRANT ALL ON *.* TO 'test'@'%';,最后执行 FLUSH PRIVILEGES; 刷新权限。完成这一步后,远程连接的问题基本可以解决。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述