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

 更新时间:2022年12月01日 10:22:28   作者:菜到极致就是渣  
用户经认证后成功登录数据库,之后服务器将通过系统权限表检测用户发出的每个请求操作,判断用户是否有足够的权限来实施该操作,这就是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角色的权限后,连查看数据库的权限都没有了

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

到此这篇关于MySQL权限控制和用户与角色管理实例分析讲解的文章就介绍到这了,更多相关MySQL权限控制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mysql中Insert into xxx on duplicate key update问题

    Mysql中Insert into xxx on duplicate key update问题

    在看代码的过程中碰到了这一用法,不太理解,google了一下。它的意义其实是如果在insert语句末尾制定了on duplicate key update语句的话,则当插入行会导致一个unique索引或者primary key中出现重复值,则执行update中的语句,否则才插入新行
    2012-08-08
  • 如何解决安装MySQL5.0后出现1607异常

    如何解决安装MySQL5.0后出现1607异常

    小伙们在安装mysql5.0的时候是不是遇到过1607异常问题,大家都是怎么解决的呢?下面小编跟大家分享我是如何解决安装MySQL5.0后出现1607异常的,需要的朋友可以参考下
    2015-10-10
  • 如何利用MySQL查询varbinary中存储的数据

    如何利用MySQL查询varbinary中存储的数据

    varbinary 类型和char与varchar类型是相似的,他们是包含字节流而不是字符流,他们有二进制字符的集合和顺序,他们的对比,排序是基于字节的数值进行的,本文给大家介绍如何利用MySQL查询varbinary中存储的数据,感兴趣的朋友一起看看吧
    2023-07-07
  • MySQL批量去掉某个字段中的空格

    MySQL批量去掉某个字段中的空格

    这篇文章主要介绍了MySQL批量去掉某个字段中的空格的简单方法,具有一定参考价值,给大家分享下,一起参考,交流。
    2017-10-10
  • MySQL安装后不能用是什么情况该如何解决

    MySQL安装后不能用是什么情况该如何解决

    之前安装过MYSQL好像不用手动启动服务,具体也忘记了,但我上回给公司安装的那个是要手动安装服务的,如果mysql刚刚安装不能用,可能是服务没有安装
    2014-03-03
  • MYSQL查询时间范围内的数据示例代码

    MYSQL查询时间范围内的数据示例代码

    这篇文章主要介绍了MYSQL查询时间范围内的数据,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • windows下安装MySQL详细教程

    windows下安装MySQL详细教程

    这篇文章主要介绍了windows下安装MySQL教程的相关资料,需要的朋友可以参考下
    2022-10-10
  • MySQL数据库中CAST与CONVERT函数实现类型转换的讲解

    MySQL数据库中CAST与CONVERT函数实现类型转换的讲解

    今天小编就为大家分享一篇关于MySQL数据库中CAST与CONVERT函数实现类型转换的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • MongoDB日期查询操作图文详解

    MongoDB日期查询操作图文详解

    MongoDB中按日期查询是一种常见的查询操作,而按日期查询也是开发人员在MongoDB工作中最常遇到的查询任务之一,这篇文章主要给大家介绍了关于MongoDB日期查询操作的相关资料,需要的朋友可以参考下
    2024-02-02
  • MySQL复合查询(多表查询、子查询)的实现

    MySQL复合查询(多表查询、子查询)的实现

    MySQL复合查询是指在一个SQL语句中使用多个查询条件,以过滤和检索数据,本文主要介绍了MySQL复合查询(多表查询、子查询)的实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12

最新评论