← 中文资源

简体中文版本

MySQL 报错 1045 用户访问被拒绝

通过检查用户与主机的匹配、认证插件与密码配置,解决 MySQL 的 1045 访问被拒。

阅读英文原文

症状

连接以 Access denied for user 失败,消息给出 MySQL 实际评估的用户与主机。MySQL 按用户与主机两者匹配账户,因此为 localhost 创建的账户无法满足来自容器网络的连接。或者密码与客户端发送的不同,或该用户使用的认证插件不被旧客户端库支持。

诊断

读取错误中的用户与主机;查看 mysql.user 的 host 与 plugin;用 mysql 客户端以相同凭据直接测试。

mysql -e "select user, host, plugin from mysql.user"

根因

所提供的凭据与针对该用户和主机的授权不匹配,原因是账户缺少匹配的主机条目、密码不同,或客户端不支持其认证插件。

修复

为实际连接来源的主机创建或授权账户;设置正确密码;选择客户端支持的认证插件;修改后执行 flush privileges。

验证

从应用再次连接确认成功,并确认账户权限足以完成其操作。连接成功且权限充分即证明修复。

常见陷阱

用 ‘%’ 通配主机虽然方便但扩大暴露面;应尽量限定来源网段。