记录一次 MySQL 连接失败的排查过程,问题场景是 Linux Ubuntu 18.04 环境下,IntelliJ IDEA 操作数据库时报错:
Client does not support authentication protocol requested by server; consider upgrading MySQL client.
刚遇到时确实有些困惑,后来逐步排查,发现根本原因在于用户权限与认证协议不匹配。下面将解决步骤与排查思路整理出来,对类似场景应有不错的参考价值。
可能原因:权限不足
一开始注意到一个异常现象:在 terminal 中登录 MySQL 时,普通用户始终失败 —— 报 Access denied for user 'root'@'localhost',即便用 Navicat 也一样,持续报 2002 错误。但只要切换到 root 用户,就能正常登录。直觉告诉我问题可能与用户权限有关,因为 IDEA 是以普通用户权限启动的,自然也只能以普通用户身份连接数据库。
附 terminal 登录 MySQL 的方法(root 可替换成其他用户名):
via :~$ mysql -u root -p
排查到这一步,想到的解决方案是:创建一个新用户,赋予其完整的数据库操作权限,然后让 IDEA 使用该新用户的账号密码进行连接。实践下来果然有效。
详细操作步骤:
1. 先通过 root 权限进入 MySQL:
via :~$ sudo su via :~$ mysql -u root -p
2. 创建新用户:
CREATE USER '用户名'@'host' IDENTIFIED BY '密码';
3. 授权(这里直接授予全部权限,实际场景中可按需调整):
GRANT ALL ON *.* TO '用户名'@'localhost';
4. 刷新权限:
flush privileges;
完成这一步后,再用 IDEA 连接数据库,一切恢复正常。回头再看报错信息,其实还有一层潜在原因 —— 新版本 MySQL 服务端默认使用了 caching_sha2_password 认证插件,而旧版客户端(包括部分 IDE 自带的驱动)可能不支持。如果上述方法仍然无效,可以检查 MySQL 的用户认证插件,并考虑将其改为 mysql_native_password,但需先确认安全策略允许这样做。
总的来说,这类问题在环境迁移或初次配置数据库时比较常见。抓住“用户权限”与“认证协议”两个关键点,排查思路就清晰多了。
