mysql数据库系统表-【db,tables_priv,columns_priv】权限介绍

用户权限引用

在前边我们讲解了 mysql.user 表中权限相关字段信息;但我们日常数据库使用中会涉及到使用部分权限的情况;

比如存在对账户分级需求时。

  • 系统管理员账户:root 。拥有系统所有权限。
  • 业务系统一级账户:拥有业务系统数据库中所有操作权限。
  • 业务系统二级账户:拥有业务系统存储过程,视图,函数等创建调用权限。
  • 业务系统三级账户:拥有业务系统表数据操作权限。
  • 业务系统四级账户:仅允许查询业务系统表数据。
  • 业务系统五级账户:仅允许查询业务系统中部分表的部分字段。

这个时候仅靠user表是无法满足要求的;因为user表是适用于账户全局权限控制的。此时权限控制会引入另外三张表:

mysql.db
mysql.tables_priv
mysql.columns_priv
  • mysql.db : 数据库级别权限
  • mysql.tables_priv :表级别权限
  • mysql.columns_priv : 列级别权限

在介绍这三张表之前我们先回顾一下用户创建用户授权 语句;

用户表权限与授权语句关系

创建用户

创建用户最小条件:用户名,对应HOST,用户密码;满足这三项的时候就可以直接创建用户 ,其他用户属性字段在不指定的情况下;系统会使用默认值;

创建一个名为:mysql5,HOST为所有地址:‘%’,用户密码为:0110#Wh

CREATE user 'mysql5'@'%' IDENTIFIED by '0110#Wh'

此时创建的用户‘mysql5’ 虽然对用户连服务器的地址没有限制;但是没有任何权限的。
在mysql.user 表的体现:

在这里插入图片描述

对用户表授权

现在需要对用户 mysql5 授予全局的select权限;

GRANT SELECT ON *.* TO 'mysql5'@'%';

GRANT 是授权语句;SELECT 是授权类型;ON 关键字;*.* 所有数据库的所有表,第一个 ‘’ 代表所有数据库,第二个 ‘
代表库下的所有表;库与表使用‘.’ 分隔;‘mysql5’@‘%’ 表示指定的用户 (用户权限识别对象是用户名与HOST共同组成) 。 该语句执行完成后 mysql.user 表中用户的查询权限值已经由 N 变成了 Y
在这里插入图片描述
现在用户 mysql5 已经可以打开系统的所有库中的所有表(包括mysql系统库);

其原因就在于我们给 mysql5 账户设置权限的时候使用了 *.* ; 当权限范围指示为 *.* 的时候,表示此时设置的权限是全局的;其作用范围仅与账户有关;不涉及到限制库与表。

DB表

接下来我们来看看mysql.db表的权限;
首先清理用户 mysql5@% 的所有权限

REVOKE ALL ON *.* FROM 'mysql5'@'%';

此时用户权限已经回到刚创建时的初始状态;

要求:给 mysql5@% 用户授予order 库的所有 select 权限;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值