MySQL5.7 和MySQL 8.0 数据库账号授权区别

目录

1. 用户创建与授权语法

1.1 MySQL 5.7

1.2 MySQL 8.0

2. 默认身份认证插件

3. 密码管理策略

4. 角色管理支持

5. 配置持久化

6. 核心差异速览


MySQL 5.7 和 MySQL 8.0 在授权 root账号(以及所有用户账号)的语法、默认安全设置和整体权限管理逻辑上存在关键差异,其中最核心的区别在于用户创建与授权的分离,以及默认身份认证插件的变更。

1. 用户创建与授权语法

1.1 MySQL 5.7

在 MySQL 5.7 中,可以使用一条 GRANT语句同时创建用户并授予权限。其语法通常如下:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';

这条命令会检查用户 'root'@'%'是否存在,如果不存在则自动创建,然后授予所有权限。

1.2 MySQL 8.0

而在 MySQL 8.0 中,用户创建和权限授予必须分为两个独立的步骤执行。

  1. 首先,需要使用 CREATE USER语句创建用户:

    CREATE USER 'root'@'%' IDENTIFIED BY 'password';
  2. 然后,使用 GRANT语句授予权限:

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

    如果在 MySQL 8.0 中尝试使用 MySQL 5.7 的合并语法,会导致 SQL 语法错误。

2. 默认身份认证插件

MySQL 5.7 默认的身份认证插件是 mysql_native_password

MySQL 8.0 将默认的身份认证插件更改为 caching_sha2_password,这提供了更强的密码安全性。这一变更是导致部分旧版本客户端或应用程序在尝试连接 MySQL 8.0 时可能失败的主要原因。如果遇到兼容性问题,可以将特定用户的认证插件改回 mysql_native_password

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

3. 密码管理策略

MySQL 8.0 引入了更精细的密码管理策略,而 MySQL 5.7 在这方面功能相对简单。

  • 密码历史策略:在 MySQL 8.0 中,可以设置 password_history规则,强制用户在一定次数内不能重复使用旧密码。

  • 密码过期策略:MySQL 8.0 支持密码过期策略,可以要求用户定期更换密码。

4. 角色管理支持

MySQL 8.0 引入了基于角色的权限管理机制。可以创建角色,将一组权限授予角色,然后再将角色分配给用户,这大大简化了多用户环境下相同权限集的分配和管理工作。MySQL 5.7 不支持此功能,必须为每个用户单独授权。

5. 配置持久化

在 MySQL 5.7 中,使用 SET GLOBAL命令设置的全局变量是临时的,重启服务后会失效,必须通过修改配置文件(如 my.cnf)才能永久生效。

MySQL 8.0 新增了 SET PERSIST命令,可以将动态修改的配置持久化到配置文件(如 mysqld-auto.cnf)中,即使服务重启,设置也会保留。这对于一些与服务器行为相关的全局设置(非用户权限相关)的持久化非常方便。

6. 核心差异速览

下表清晰地总结了 MySQL 5.7 和 MySQL 8.0 在授权 root(或任何用户)时的核心区别:

特性

MySQL 5.7

MySQL 8.0

用户创建与授权

一条 GRANT语句可同时完成

必须分开执行:先 CREATE USER,再 GRANT

默认认证插件

mysql_native_password

caching_sha2_password(更安全,但需注意客户端兼容性)

密码管理

功能相对简单

增强:支持密码历史、过期时间等策略

角色管理

不支持

支持:可创建角色并批量分配权限,简化管理

配置持久化

使用 SET GLOBAL是临时生效

支持 SET PERSIST,使动态修改的配置永久生效

总而言之,MySQL 8.0 在用户权限管理上朝着更安全、更规范、更易管理的方向演进。在授权 root账号时,务必注意语法上的差异。同时,也要关注认证插件变更可能带来的客户端连接兼容性问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值