文章目录
一. 用户
在mysql安装的时候会创建一个超级管理员一般是root
使用超级管理员登陆mysql。
1. 创建用户
1.1 创建用户的方式
① create user 指令
不用密码
create user "用户名"@'主机名'
没有指定主键名默认是%
mysql的%虽然表示是任何主机,但是它只是针对于通过TCP/IP连接过来的主机。
没有密码的登录方式
设置登录密码
同样,如果没指定主机名,默认是本地主机%
create user “用户名”@"主机名" identified by '密码';
主机名不是瞎指定,要绑定主机的IP,localhost是指定为本机,如果是远程登录则需要指定远程登录的IP作为主机名
上面使用的密码是明文,任意泄露,下面给出mysql中(笔者找到能用的加密函数)
-
SHA1
-
MD5
设置密码的存活日期
create user '用户名'@'主机名' identified by 密码 PASSWORD EXPIRE INTERVAL 存活时间;
②直接对用户表user进行插入操作
不常用,感兴趣可以看看,版本不一样不知道能不能用
mysql
2. 查看创建的用户
select user from mysql.user;
3. 删除用户
drop user "用户名"@"主机名"
4. 对用户的权限操作
(1)查看用户权限
show grants for 用户名@主机名
超级用户具有数据库的所有权限
(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...;
没有级联权限回收
二. 角色
角色部分的官方文档
角色是权限的集合, 比如角色项目主管,有对表的增删查改权限,如果用户A被指定为项目主管(相当于把项目主管的权限都赋予了用户A),用户A就具有对表的增删查改权限
角色的创建,授权,权限回收,权限查看,删除操作和用户是一样的
1. 创建角色
create role 角色1, 角色2,....
2. 激活角色(坑)★
授予用户帐户的角色在帐户会话中可以是活动的或不活动的。如果授予的角色在会话中处于活动状态,则其权限适用;否则,他们不会。要确定当前会话中哪些角色处于活动状态,请使用该 CURRENT_ROLE()函数。
下面永久激活(还有一种方法不知道怎么用,还是这种方便点,另一种可以查看官方文档,会了以后可以给我分享分享怎么用)
# 查看 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 角色
5. 删除角色
drop role 角色名
6. 角色权限给用户或其他角色
grant 角色名 to 用户1,用户2,角色1,...
如果想展开查看用户当前权限可以在show grants for 用户
后加是using 用户用到的角色