前言角色(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: kuzmaSelect_priv: NInsert_priv: NUpdate_priv: NDelete_priv: NCreate_priv: NDrop_priv: NReload_priv: NShutdown_priv: NProcess_priv: NFile_priv: NGrant_priv: NReferences_priv: NIndex_priv: NAlter_priv: NShow_db_priv: NSuper_priv: N Create_tmp_table_priv: NLock_tables_priv: NExecute_priv: NRepl_slave_priv: NRepl_client_priv: NCreate_view_priv: NShow_view_priv: NCreate_routine_priv: NAlter_routine_priv: NCreate_user_priv: NEvent_priv: NTrigger_priv: NCreate_tablespace_priv: Nssl_type:ssl_cipher: 0xx509_issuer: 0xx509_subject: 0xmax_questions: 0max_updates: 0max_connections: 0max_user_connections: 0plugin: mysql_native_password authentication_string: *E2D9547BC3A2AD2EEC6BE9636489AC973656EEB9password_expired: N password_last_changed: 2022-10-05 17:41:06password_lifetime: NULLaccount_locked: N1 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 , 未锁定
经验总结扩展阅读
- python+request+pymysql+pytest数据驱动
- CentOS 7.9 安装 MySQL 5.7.35
- 关于windows-server-下MySQL Community版本的的安装与配置
- CentOS 7 下安装 MySQL 8.x
- 无汞电池可以直接扔吗
- 魅蓝e怎么关闭访客模式
- iPhone用户羡慕安卓手机的地方 苹果和安卓的区别是什么
- 2021年Q4手机用户偏好榜-2021年安兔兔第四季度用户偏好榜
- oppo互传是什么意思
- day04-MySQL常用函数01