在 MySQL 8.4 中,若需兼容旧版客户端(如使用 mysql_native_password 插件)并移除 ONLY_FULL_GROUP_BY 模式
本文介绍了两种方法解决MySQL认证兼容性问题。方法一通过修改用户认证方式,使用ALTER USER命令将用户插件改为mysql_native_password,并刷新权限。方法二通过修改my.ini配置文件,设置默认认证插件并移除ONLY_FULL_GROUP_BY模式,需注意sql-mode参数中的连字符使用。修改后需重启MySQL服务并验证配置是否生效。文章包含详细操作步骤和注意事项,并辅以
一、兼容 mysql_native_password 插件
方法 1:修改用户认证方式
1.登录 MySQL:
mysql -u root -p
2.修改用户插件:
– 修改特定用户(如 root)
ALTER USER ‘用户名’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘你的密码’;
– 修改所有使用旧插件的用户(可选)
SELECT user, host FROM mysql.user WHERE plugin = ‘caching_sha2_password’;
– 对查询结果逐个执行 ALTER USER
3.刷新权限:
FLUSH PRIVILEGES;
方法 2:设置默认认证插件*和移除 ONLY_FULL_GROUP_BY 模式
1.编辑配置文件 my.ini:
[mysqld]
mysql_native_password=ON
sql-mode=“STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION”
注意事项:请特别注意 sql-mode 中的连字符"-“,而非下划线”_"。
如图所示:
2.重启 MySQL 服务:
net stop MySQL84
net start MySQL84
注意事项:MySQL84是你本地安装的mysql服务名
3.验证配置是否生效
3.1检查全局 SQL 模式:
SELECT @@GLOBAL.sql_mode;
– 应无 ONLY_FULL_GROUP_BY
如图所示:

更多推荐
所有评论(0)