MySQL 8.0+ 默认认证插件为 caching_sha2_password,导致旧版客户端连接失败;需在安装时选择传统认证(Windows)或执行 ALTER USER ... IDENTIFIED WITH mysql_native_password(Linux/macOS),并配置 my.cnf/my.ini 的 default_authentication_plugin,最后 FLUSH PRIVILEGES。

MySQL 8.0+ 默认用 caching_sha2_password,但多数本地开发工具(Navicat、DBeaver、PyMySQL 低版本)连不上——不是密码错了,是认证插件不认。
安装时就选传统认证(Windows GUI 安装器)
如果你用的是 Windows 上的 MySQL Installer(.msi 包),在「Authentication Method」页面必须手动选:Use Legacy Authentication Method (Retain MySQL 5.x Compatibility)。这会自动把 default_authentication_plugin 设为 mysql_native_password,且 root 密码一步设好。跳过这步,后续就得手动改插件,还容易漏掉 FLUSH PRIVILEGES。
Linux/macOS 安装后必须改插件(不能只设密码)
Homebrew、apt 或 tar.gz 安装的 MySQL 8.x,默认 root 用户插件是 caching_sha2_password,哪怕你用 ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxx' 设了密码,插件也不会变——客户端仍会报 Authentication plugin 'caching_sha2_password' cannot be loaded 或直接拒绝连接。
面向 CRM 系统的 MySQL 8 数据库模式设计。当用户需要为客户关系管理(CRM)系统设计、评审、优化或生成数据库模式时,应使用此项技能。
- 正确写法必须显式指定插件:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPass123!'; - 如果要远程访问,还得单独处理
'root'@'%':ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'YourPass123!'; - 执行完一定要
FLUSH PRIVILEGES;,否则变更不生效 - 验证是否成功:
SELECT user, host, plugin FROM mysql.user WHERE user = 'root';,确认两行的plugin都是mysql_native_password
my.cnf / my.ini 里配 default_authentication_plugin 是治本之策
光改用户插件是“打补丁”,真正一劳永逸的方法是在配置文件里提前声明默认插件。否则新建用户(比如 CREATE USER 'app'@'localhost';)还是会默认用 caching_sha2_password,下次又踩坑。
- Linux:编辑
/etc/mysql/my.cnf或/etc/my.cnf,在[mysqld]段加一行:default_authentication_plugin=mysql_native_password - macOS(Homebrew):配置文件通常在
/usr/local/etc/my.cnf - Windows:
my.ini的[mysqld]下加同样配置 - 改完重启 MySQL(
sudo systemctl restart mysql或brew services restart mysql)
最常被忽略的一点:改插件 ≠ 改密码策略。即使用了 mysql_native_password,如果密码太短或不含特殊字符,validate_password 插件仍会拒绝设置——查 SHOW VARIABLES LIKE 'validate_password%'; 看当前强度要求,必要时临时调低 validate_password.length。

















