mysql 8.0.34安装向导中“强密码加密”选项实为强制默认的caching_sha2_password基线设定,勾选则root及新用户默认使用该插件,不勾选则降级为mysql_native_password;该选项仅影响用户plugin字段初始值,不改变内核支持能力,且可通过alter user或set persist即时修正。

caching_sha2_password 不是“必须选择”,而是 MySQL 8.0.34 安装向导默认启用、且不提供跳过选项的安全基线设定——它本质是强制默认,而非强制用户勾选。你看到的“强密码加密”复选框,其实是安装程序给你留的一个降级出口,用来主动退回 mysql_native_password。
安装界面那个勾选框到底在控制什么?
它只影响 root 用户(及后续新建用户)的默认认证插件,不改变 MySQL 内核能力或服务运行逻辑:
- 勾选 → root 用户创建时使用
caching_sha2_password插件,plugin字段为caching_sha2_password - 不勾选(即选“传统认证方法”)→ root 用户使用
mysql_native_password,plugin字段为mysql_native_password - 无论是否勾选,MySQL 8.0.34 本身都内置并支持两种插件,
INSTALL PLUGIN仍可手动加载
为什么不能彻底去掉这个选项?
因为兼容性兜底需求真实存在,且无法靠文档解决:
-
Navicat 11及更早版本、mysql-connector-java 5.1.x、部分旧版 PHPmysqli扩展,根本不识别caching_sha2_password握手协议,直接报错ERROR 2058 (HY000): The password hash doesn't match...或ERROR 1045 - Windows 上某些绿色版客户端(如老版 HeidiSQL)未更新 OpenSSL 库,连 RSA 公钥交换阶段就失败
- 内网开发机若没配 SSL 证书,
caching_sha2_password在非 SSL 连接下会尝试用服务器公钥加密密码——而旧客户端不支持该流程
选错后还能改吗?当然能,但得动手
安装完才发现连不上?别重装,直接 SQL 改插件:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password';
注意三点:
- 必须用
ALTER USER,SET PASSWORD在 MySQL 8.0 已失效 - 执行前确保你当前是以能登录的身份(比如刚装好时用命令行
mysql -u root -p登进去) - 改完要
FLUSH PRIVILEGES;,否则部分客户端仍缓存旧插件信息
真正容易被忽略的点
很多人以为只要把 root 改成 mysql_native_password 就万事大吉,但忘了:新创建的用户默认还是 caching_sha2_password。如果项目里用脚本自动建库建用户,或者 ORM(如 Django 的 manage.py dbshell)隐式创建用户,照样踩坑。最稳妥的做法是安装时就选传统模式,或装完立刻改全局默认:
SET PERSIST default_authentication_plugin = 'mysql_native_password';











