🚀 优质资源分享 🚀
学习路线指引(点击解锁) | 知识定位 | 人群定位 |
---|---|---|
🧡 Python实战微信订餐小程序 🧡 | 进阶级 | 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 |
💛Python量化交易实战💛 | 入门级 | 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 |
前言
角色(Role),可以认为是一些权限的集合,一直是存在各个数据库中,比如Oracle、SQL Server、OceanBase等,MySQL 自从 8.0 release 才引入角色这个概念。
为用户赋予统一的角色,即把一个带有某些权限集合的角色分配给一个用户,那该用户就拥有了该角色所包含的所有权限,权限的修改直接通过角色来进行,无需为每个用户单独授权,大大的方便了权限管理。
一、回顾MySQL 8.0之前的用户管理
1、创建用户(默认缺省)
从 CREATE USER 的 help 语法解释中发现,其不仅可以创建新的 MySQL 帐户,还支持为新帐户建立身份验证、SSL/TLS、资源限制和密码管理属性,并控制帐户最初是锁定还是解锁。
那么,缺省选项默认创建的用户是怎么样的呢?
mysql> CREATE USER kuzma IDENTIFIED BY 'iamkuzma';
Query OK, 0 rows affected (0.07 sec)
mysql> select * from mysql.user where User="kuzma"\G
*************************** 1. row ***************************
Host: %
User: kuzma
Select\_priv: N
Insert\_priv: N
Update\_priv: N
Delete\_priv: N
Create\_priv: N
Drop\_priv: N
Reload\_priv: N
Shutdown\_priv: N
Process\_priv: N
File\_priv: N
Grant\_priv: N
References\_priv: N
Index\_priv: N
Alter\_priv: N
Show\_db\_priv: N
Super\_priv: N
Create\_tmp\_table\_priv: N
Lock\_tables\_priv: N
Execute\_priv: N
Repl\_slave\_priv: N
Repl\_client\_priv: N
Create\_view\_priv: N
Show\_view\_priv: N
Create\_routine\_priv: N
Alter\_routine\_priv: N
Create\_user\_priv: N
Event\_priv: N
Trigger\_priv: N
Create\_tablespace\_priv: N
ssl\_type:
ssl\_cipher: 0x
x509\_issuer: 0x
x509\_subject: 0x
max\_questions: 0
max\_updates: 0
max\_connections: 0
max\_user\_connections: 0
plugin: mysql\_native\_password
authentication\_string: *E2D9547BC3A2AD2EEC6BE9636489AC973656EEB9
password\_expired: N
password\_last\_changed: 2022-10-05 17:41:06
password\_lifetime: NULL
account\_locked: N
1 row in set (0.06 sec)
如上,在 CREATE USER 后会在 mysql.user 系统表中注册相关用户信息,未指定的属性设置为其默认值:
- 帐户名的主机名部分,如果省略,则默认为’%‘,即 ‘kuzma’@’%',表示不限主机连接
- Authentication:系统变量定义的认证插件 default_authentication_plugin = mysql_native_password ,空凭证
- SSL/TLS:NONE
- 资源限制:无限制,max_questions最大查询数、max_updates最大更新数等都为0(默认值),即未做限制
- 密码管理:PASSWORD EXPIRE DEFAULT
- 密码过期:NONE,未设定,即永不过期
- 账户锁定:ACCOUNT UNLOCK,未锁定
首次创建的帐户没有权限,xxx_priv都为NONE,默认未设置用户权限,若需要分配权限,另外的通过 GRANT 语句为用户授权。
若要删除用户,DROP USER ‘kuzma’@‘%’; 注意指定用户名和主机名。
2、带选项创建用户
2.1、设置密码过期
# 将密码标记为过期,用户在第一次连接到服务器时必须选择一个新密码
CREATE USER 'kuzma'@'localhost' PASSWORD EXPIRE;
# 默认过期时间,应用 default\_password\_lifetime 系统变量指定的全局过期策略
CREATE USER 'kuzma'@'localhost' PASSWORD EXPIRE DEFAULT;
# 禁用密码过期,永不过期
CREATE USER 'kuzma'@'localhost' PASSWORD EXPIRE NEVER;
# 设定过期时间,每 180 天选择一个新密码
CREATE USER 'kuzma'@'localhost' PASSWORD EXPIRE INTERVA