警告含义
mysql_native_password 是旧版密码加密插件,MySQL 8.0+ 默认推荐 caching_sha2_password,后续版本会彻底移除旧插件,只是警告不影响现有连接,但建议统一修改。
方案 1:修改已有用户加密方式(推荐,无需改配置)
登录 MySQL 客户端执行,替换 用户名@主机:
sql
-- 方式1:本地root用户
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '你的密码';
-- 方式2:允许任意远程访问的root
ALTER USER 'root'@'%' IDENTIFIED WITH caching_sha2_password BY '你的密码';
-- 刷新权限生效
FLUSH PRIVILEGES;
验证是否修改成功
sql
SELECT user, host, plugin FROM mysql.user;
对应用户 plugin 字段显示 caching_sha2_password 即完成。
方案 2:全局默认使用新加密(新建用户自动生效)
1. 修改配置文件 my.cnf/my.ini
ini
[mysqld]
default_authentication_plugin=caching_sha2_password
2. 重启 MySQL 服务
bash
运行
# Linux
systemctl restart mysqld
# Windows
net stop mysql
net start mysql
之后新建用户默认就是 sha2 加密,不再弹出警告。
兼容注意事项
部分老旧客户端(旧 Navicat、PHP5、老版本 JDBC)不支持 caching_sha2_password,连接会报错:
- 临时折中方案:继续使用
mysql_native_password(仅临时过渡,不推荐长期)
sql
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
- 根治方案:升级客户端驱动 / 工具版本。
一键排查脚本
查看所有使用旧加密的账号,批量处理:
sql
SELECT user,host FROM mysql.user WHERE plugin='mysql_native_password';
正文完
可以使用微信扫码关注公众号(ID:xzluomor)