在mysql安装的时候会创建一个超级管理员一般是root
使用超级管理员登陆mysql。
create user "用户名"@'主机名'
mysql的%虽然表示是任何主机,但是它只是针对于通过TCP/IP连接过来的主机。
同样,如果没指定主机名,默认是本地主机%
create user “用户名”@"主机名" identified by '密码';
主机名不是瞎指定,要绑定主机的IP,localhost是指定为本机,如果是远程登录则需要指定远程登录的IP作为主机名
上面使用的密码是明文,任意泄露,下面给出mysql中(笔者找到能用的加密函数)
create user '用户名'@'主机名' identified by 密码 PASSWORD EXPIRE INTERVAL 存活时间;
不常用,感兴趣可以看看,版本不一样不知道能不能用
mysql
select user from mysql.user;
drop user "用户名"@"主机名"
mysql8.0权限官方文档(英语)
show grants for 用户名@主机名
官方文档
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 表示所有权限
*.* 表示任意数据库的任意数据表
上面语句的就相当于授予超级用户一样的权限
revoke 权限1,权限2...
ON 数据库1.数据表1,数据库2.数据表2...
FROM 用户1,用户2...;
没有级联权限回收
角色部分的官方文档
角色是权限的集合, 比如角色项目主管,有对表的增删查改权限,如果用户A被指定为项目主管(相当于把项目主管的权限都赋予了用户A),用户A就具有对表的增删查改权限
角色的创建,授权,权限回收,权限查看,删除操作和用户是一样的
create role 角色1, 角色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)
grant 权限1,权限2... on 数据库1.表1, 数据库2.表2... to 角色1,角色2... with grant option
with grant option
表示被赋予该角色的用户可以传播权限
show grants for 角色
drop role 角色名
grant 角色名 to 用户1,用户2,角色1,...