Skip to content

MySQL 连接与认证插件排障 ​

MySQL 连接失败 ​

按网络、监听端口、账号认证的顺序定位错误。下列命令显式指定 TCP;Unix 上 localhost 默认可能走 socket,单写 -P 不能保证测试该端口。<host>、<user> 是需要替换的占位符。

先确认客户端所在主机、目标地址和端口。使用 -p 让客户端交互式询问密码,不要把密码放在命令行参数里。

排查步骤 ​

1. 测试服务器是否响应 ​

mysqladmin --protocol=TCP -h <host> -P 3306 -u <user> -p ping

预期结果: 收到服务器响应;即使认证失败,也可区分网络与认证路径。

2. 获取准确的连接错误 ​

mysql --protocol=TCP -h <host> -P 3306 -u <user> -p

预期结果: 记录错误代码和目标地址,确认连接走 TCP 而非意外的本地 socket。

3. 连接成功后确认身份和服务器 ​

mysql --protocol=TCP -h <host> -P 3306 -u <user> -p -e "SELECT CURRENT_USER(), @@hostname;"

预期结果: 输出账号和服务器名与预期一致,避免连到错误实例。

常见报错 ​

ERROR 2003 / connection refused ​

原因: 目标端口没有可达监听服务,或网络策略阻断。

处理方式: 检查主机名、端口、服务监听地址与防火墙;不要先修改账号。

ERROR 1045 access denied ​

原因: 用户名、密码或来源主机授权不匹配。

处理方式: 核对账号及其允许的来源主机,按最小权限修正凭据或授权。

相关文档 ​

官方资料 ​

MySQL 认证插件连接故障 ​

M4版本边界(2026-10-17): 下方是旧客户端2059错误的原始处理记录,包含旧认证插件命令及sqlALTER拼写问题,不是8.4可直接执行的解法。MySQL8.4默认禁用mysql_native_password;应先升级兼容caching_sha2_password的客户端/驱动。现行连接认证排查提供分层步骤,保留原记录仅供追溯。

此记录针对旧客户端不支持 caching_sha2_password 的情形。下方改认证插件是当时的处理记录;应先核对客户端与服务端版本,避免直接套用到当前环境。

连接失败 ​

2059 - Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(../Frameworks/caching_sha2_password.so, 2): image not found

  • mysql -uroot -ppassword #登录

  • use mysql; #选择数据库

  • 远程连接请将'localhost'换成'%'

    sql
      sqlALTER USER 'root'@'localhost' IDENTIFIED BY 'example-user' PASSWORD EXPIRE NEVER; #更改加密方式
      ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'example-user'; #更新用户密码
      FLUSH PRIVILEGES; #刷新权限
  • ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

继续阅读