MySql8.0.24中用户管理

文章目录

  • 一. 用户
    • 1. 创建用户
      • 1.1 创建用户的方式
        • ① create user 指令
          • 不用密码
          • 设置登录密码
            • 设置密码的存活日期
        • ②直接对用户表user进行插入操作
    • 2. 查看创建的用户
    • 3. 删除用户
    • 4. 对用户的权限操作
      • (1)查看用户权限
      • (2). 授予权限
      • (3). 回收权限
  • 二. 角色
    • 1. 创建角色
    • 2. 激活角色(坑)★
    • 3. 给角色权限
    • 4. 查看角色权限
    • 5. 删除角色
    • 6. 角色权限给用户或其他角色

一. 用户

在mysql安装的时候会创建一个超级管理员一般是root
使用超级管理员登陆mysql。
MySql8.0.24中用户管理_第1张图片

1. 创建用户

1.1 创建用户的方式

① create user 指令

不用密码
create user "用户名"@'主机名' 

在这里插入图片描述
没有指定主键名默认是%

mysql的%虽然表示是任何主机,但是它只是针对于通过TCP/IP连接过来的主机。

没有密码的登录方式
MySql8.0.24中用户管理_第2张图片
MySql8.0.24中用户管理_第3张图片

设置登录密码

同样,如果没指定主机名,默认是本地主机%

create user “用户名”@"主机名" identified by '密码';

主机名不是瞎指定,要绑定主机的IP,localhost是指定为本机,如果是远程登录则需要指定远程登录的IP作为主机名
在这里插入图片描述
上面使用的密码是明文,任意泄露,下面给出mysql中(笔者找到能用的加密函数)

  • SHA1
    MySql8.0.24中用户管理_第4张图片

  • MD5
    MySql8.0.24中用户管理_第5张图片

设置密码的存活日期
create user '用户名'@'主机名' identified by 密码 PASSWORD EXPIRE INTERVAL 存活时间;

在这里插入图片描述

②直接对用户表user进行插入操作

不常用,感兴趣可以看看,版本不一样不知道能不能用
mysql

2. 查看创建的用户

select user from mysql.user;

MySql8.0.24中用户管理_第6张图片

3. 删除用户

drop user "用户名"@"主机名"

在这里插入图片描述

4. 对用户的权限操作

mysql8.0权限官方文档(英语)

(1)查看用户权限

show grants for 用户名@主机名

MySql8.0.24中用户管理_第7张图片
超级用户具有数据库的所有权限

(2). 授予权限

官方文档

grant 权限1,权限2... on 数据库1.1, 数据库2.2... to 用户1,用户2... with grant option

with grant option 是表示运行用户把自己有的权限再授予给其他用户

grant all on *.* to 用户1,用户2... with grant option

all 表示所有权限
*.* 表示任意数据库的任意数据表
上面语句的就相当于授予超级用户一样的权限

在这里插入图片描述

(3). 回收权限

revoke 权限1,权限2...
  ON 数据库1.数据表1,数据库2.数据表2...
  FROM 用户1,用户2...;

MySql8.0.24中用户管理_第8张图片

没有级联权限回收

二. 角色

角色部分的官方文档
角色是权限的集合, 比如角色项目主管,有对表的增删查改权限,如果用户A被指定为项目主管(相当于把项目主管的权限都赋予了用户A),用户A就具有对表的增删查改权限
角色的创建,授权,权限回收,权限查看,删除操作和用户是一样的

1. 创建角色

create role 角色1, 角色2,....

在这里插入图片描述

2. 激活角色(坑)★

授予用户帐户的角色在帐户会话中可以是活动的或不活动的。如果授予的角色在会话中处于活动状态,则其权限适用;否则,他们不会。要确定当前会话中哪些角色处于活动状态,请使用该 CURRENT_ROLE()函数。
MySql8.0.24中用户管理_第9张图片
下面永久激活(还有一种方法不知道怎么用,还是这种方便点,另一种可以查看官方文档,会了以后可以给我分享分享怎么用)

# 查看 activate_all_roles_on_login 变量
mysql> show variables like 'activate_all_roles_on_login';
+-----------------------------+-------+
| Variable_name               | Value |
+-----------------------------+-------+
| activate_all_roles_on_login | OFF   |
+-----------------------------+-------+
1 row in set (1.53 sec)

# 启用该变量 先动态启用 之后可以将此参数加入my.cnf配置文件中
mysql> set global activate_all_roles_on_login = on;
Query OK, 0 rows affected (0.50 sec)

# 之后角色就会自动激活
mysql> create user 'dev2'@'%' identified by '123456';
Query OK, 0 rows affected (0.68 sec)

mysql> grant 'dev_role' to 'dev2'@'%';
Query OK, 0 rows affected (0.38 sec)

3. 给角色权限

grant 权限1,权限2... on 数据库1.1, 数据库2.2... to 角色1,角色2... with grant option

with grant option表示被赋予该角色的用户可以传播权限

在这里插入图片描述

4. 查看角色权限

show grants for 角色

MySql8.0.24中用户管理_第10张图片

5. 删除角色

drop role 角色名

6. 角色权限给用户或其他角色

grant 角色名 to 用户1,用户2,角色1...

MySql8.0.24中用户管理_第11张图片
如果想展开查看用户当前权限可以在show grants for 用户后加是using 用户用到的角色
MySql8.0.24中用户管理_第12张图片

你可能感兴趣的:(mysql,mysql,数据库开发)