MySQL权限控制和用户与角色管理实例分析讲解

一、MySQL用户登录

一般在本机上我们的登录命令:
mysql -u root -p+密码
这里介绍命令的作用:
-u  指定用户名
-h  指定主机地址(默认为localhost)
-p  指定用户输入的密码
-P  指定服务器的端口(默认为3306)

二、用户管理

什么是用户管理呢?在创建了一个数据库后,数据库的管理员或者是创建者可以创建用户并同时对该用户做出限制(也就是用户的权限),当其他人想要访问该数据库时,可以通过使用该用户的信息登录数据库。

1:查询用户
use mysql;
select *from user;
//nysql数据库的user表存放的是该数据库中的用户信息
2:创建用户
create user '用户名'@'主机名' identified by '密码';
//如果想选择任意主机地址
create user '用户名'@'%' identified by '密码';
3:修改用户密码
alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';
4:删除用户
drop user '用户名'@'主机名';

你即使创建了一个用户但查询数据库会发现跟之前root用户查询数据库时不一样,这时候就是关于权限了。

create user 'peter'@'%' identified by '989898';
select *from user;

三、权限控制

权限控制,概念就不多说了,MySQL中定义了许多权限,这里我们只说经常使用的。

all ,all privileges    所有权限
select                 查询数据
insert                 插入数据
update                 修改数据
delete                 删除数据
alter                  修改表
drop                   删除数据表/库/视图
create                 创建数据库/表
1、查询权限
  show grants for '用户名'@'主机名';
2、授予权限
  grant + 权限列表(也就是权限) + on + 数据库名或者表名+ to + '用户名'@'主机名';
3、撤销权限
  revoke +权限列表 + on + 数据库名/表名 + from + '用户名'@'主机名';

注意多个权限之间用逗号隔开,*号通配符表示所有。

use mysql;
select *from user;
create user '888'@'%' identified by '1111';
grant all on exercise.* to '888'@'%';
show grants for '888'@'%';

四、角色管理

MySQL角色的引入有什么作用呢?与用户的管理的语法相同,但它的作用却不一样。在MySQL中角色的引入是为了方便管理拥有相同权限的用户,这样子可以进行统一管理。

1、角色的创建
  create role + 用户名
2、 角色的授权
  创建完角色后是空的,没有任何内容这时候就需要授权了
   grant + 权限 + on + 数据库/表名 + to + 角色
3、角色权限的收回
  revoke + 权限 + on + 数据库/表名 + from + 角色
4、 讲一个角色赋予其它角色或者是用户
   grant + 角色1 + to + 角色2 + with admin option 
   加了with admin option 表示获得权限的角色还可以吧这个权限再赋予别人,没有的话就不许了

这里举个例子感受下,不过在举例子前有个点要注意一下,创建了角色之后默认都是未被激活的,只有激活之后,被授予角色权限的用户才可以得到相应的权限。

select current_role();

显示上面的图片则显示角色未被激活。

激活角色语句:

set default all to + 用户名

后面使用查看激活语句就会变成:

哦对,该激活角色的方法并不是永久激活。永久激活的方法我并不喜欢用,因为我怕以后会把这个知识给忘了(其实就是菜)

继续说例子:

create role r1;
grant select,insert on exercise.* to r1;
select *from user;
# 开始创建角色
create user 's1'@'%';
create user 's2'@'%';
# 查看创建角色的权限
show grants for 's1'@'%';
# 查看r1的权限
show grants for 'r1';
# 开始将角色的权限复制给用户
grant r1 to s1;
# 查看赋予的用户的权限
show grants for 's1'@'%';

使用s1用户登录数据库

发现s1用户并没有update权限,至于其他的就不一一试验了。

revoke r1 from 's1';

收回r1角色的权限后,连查看数据库的权限都没有了

对于角色的总结:角色总的来说就是权限的集合,它是为了防止出现多个用户需要相同的权限二=而反复操作的情况,记住角色不是用户,你用角色当做用户登录了数据库这是不可能的,再一次强调角色只是一个或者是多个权限的集合。

作者:菜到极致就是渣原文地址:https://blog.csdn.net/gaoqiandr/article/details/128032375

%s 个评论

要回复文章请先登录注册