MySQL 8.0 的一些变化
在使用 MySQL 8.0 的过程中,碰到一些坑,记录一下。
账号密码加密策略
MySQL 8.0 修改了账号密码加密策略,默认的认证插件由 mysql_native_password
更改成了 caching_sha2_password
,导致一些可视化工具无法连接数据库。如果需要,可以修改默认的策略或者账号密码的认证策略。
查询当前账号密码加密策略:
1 | show variables like '%default_authentication_plugin%' |
方式1:配置文件中添加,让 MySQL 使用原密码策略(需要重启 MySQL)。
1 | [mysqld] |
方式2:执行 SQL 修改某个账号密码验证策略
1 | ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; |
授权用户账号语法变更
创建用户的操作已经不支持 grant
的同时创建用户方式,需要先创建用户再进行授权。
1 | -- 旧的语法 |
字符集变更
MySQL 8.0 默认字符集由 latin1
修改为 utf8mb4
GROUP BY
在 MySQL 8.0 以前,如果 GROUP BY 中没有指定排序,则默认按照 ASC 排序。或者你可以指定禁止排序 ORDER BY NULL
。
MySQL 8.0 GROUP BY 语句不再隐式添加排序(忽略再 GROUP BY 中的排序命令,如 DESC、ASC)。