只装 mysql-client 不行,因其版本若与 8.0 服务端不一致(尤其 minor version),会导致 caching_sha2_password 认证失败、新参数不识别、sql 导入报错及元数据查询异常。

直接装 mysql-client 就够了,但必须和服务器版本对齐,否则连不上 8.0 服务端——尤其要注意默认密码认证插件不兼容的问题。
为什么只装 client 不行?常见连接失败现象
很多用户执行 sudo apt install mysql-client 后,用 mysql -h 127.0.0.1 -u root -p 连本地 8.0 服务,结果报错:ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded。这不是 client 没装好,而是 Debian/Ubuntu 系源里的老版 client(如 5.7 或早期 8.0)根本不认识 8.0 默认的认证方式。
- 统信UOS 桌面版(基于 Debian 10/11/12)的 APT 源中,
mysql-client包版本往往滞后,比如 UOS 1070(Debian 10)源里仍是 8.0.33 之前的 client,不支持caching_sha2_password - 即使能连上,也可能无法使用
--set-gtid-purged=OFF、--skip-column-names等 8.0 新增参数 -
mysqldump若版本太低,导出的 SQL 在 8.0 服务端导入时可能触发ERROR 1231(变量未识别)
正确安装方式:优先用官网 DEB 包同步 client 版本
必须确保 mysql-client 和你实际运行的 mysqld 是同一小版本号(例如都是 8.0.36),否则认证、协议、SQL 语法层面都会出问题。
- 先确认服务端版本:
mysql --version或sudo mysqld --version - 去 MySQL 官网下载对应架构(
amd64或arm64)的mysql-community-client_*.deb,注意包名中的版本号要完全一致,例如mysql-community-client_8.0.36-1debian12_amd64.deb - 安装顺序不能跳过依赖:
sudo dpkg -i mysql-common_*.deb→sudo dpkg -i mysql-community-client-plugins_*.deb→sudo dpkg -i mysql-community-client_*.deb - 若提示依赖错误,立刻执行:
sudo apt --fix-broken install,否则mysql命令可能找不到动态库
验证 client 是否真正可用
装完别急着连,先检查三件事:
- 运行
mysql --version,输出必须是明确的mysql Ver 8.0.x,不是15.1(那是 old MySQL client 的旧版号) - 执行
mysql --help | grep caching_sha2_password,有输出说明已内置该插件支持 - 连接时加
-p后手动输入密码,避免因 shell 历史或配置文件残留旧认证方式导致静默失败 - 如果仍连不上,临时降级服务端认证(仅调试用):
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpass'; FLUSH PRIVILEGES;
最易被忽略的是:client 和 server 的 minor version(如 8.0.33 vs 8.0.36)不一致时,某些元数据查询(SELECT * FROM performance_schema.threads)会直接返回空或报错,而非明显提示——这会让排查卡在“连接成功但查不到数据”的假象里。











