MySQL用户也可以是个角色

本文介绍了MySQL 8.0引入的用户角色概念,对比了之前版本的用户管理,并探讨了其他数据库如SQL Server和OceanBase的角色管理。重点讲述了MySQL 8.0中如何创建、授权、切换和管理角色,以及用户与角色的互换使用。
摘要由CSDN通过智能技术生成

🚀 优质资源分享 🚀

学习路线指引(点击解锁) 知识定位 人群定位
🧡 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
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值