mysql权限不同用户主要分为_MySQL用户与权限管理

(一)MySQL有哪些权限

MySQL的权限列表可以使用 show privileges 来查看,主要的权限信息如下:

c5808c1c226c9157bc6e8fccfc10c572.png

这里我们根据作用域,把权限分为3类:

1.MySQL服务管理权限:用于管理MySQL服务器的操作。这些权限是全局性的,授权范围不能是特定的数据库或对象。只能使用*.*方式授予,不能使用db.*或db.tb方式授权;

2.数据库级别权限:授权范围可以是所有数据库,也可以是单个数据库下面的所有对象。可以使用*.*方式授予全部数据库,也可以使用db.*授予单个数据库;

3.对象级别权限:授权范围可以是所有数据库,也可以是单个数据库下面的所有对象,也可以是特定的对象。可以使用*.*方式授予全部数据库,也可以使用db.*授予单个数据库,还可以使用db.tb授予单个对象。

(二)MySQL权限管理相关表

在mysql数据库中包含了权限相关的表,一共6个表,分别从不同维度记录了MySQL用户的权限信息

user :用户账号,全局权限和其它非权限列

db :数据库级别权限

tables_priv :表级别权限

column_priv :列级别权限

procs_priv :存储过程和函数的权限

proxies_priv :代理用户权限

有那么多权限表,权限信息是如何存储的呢?通过测试,发现:

--当授权对象为 *.* 时,存储在user表;

--当授权对象为 db.* 时,存储在db表;

--当授权对象为 db.tb 时,存储在tables_priv表;

--当授权对象为 某个表的某个列 时,存储在column_priv表

我们不妨来验证一下上面的结论:

测试1.当授予用户user1 *.*权限时,权限信息保存在user表中,其它权限表未存储相关权限信息。

create user user1 identified by '123456';grant update on *.* touser1;

mysql> select * from mysql.user a where a.user = 'user1'\G*************************** 1. row ***************************Host:%

User: user1

Select_priv: N

Insert_priv: N

Update_priv: Y

Delete_priv: N

Create_priv: N

mysql> select * from mysql.db a where a.user = 'user1';

Emptyset (0.00sec)

mysql> select * from mysql.tables_priv a where a.user = 'user1';

Emptyset (0.00sec)

mysql> select * from my

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 用户权限管理包括两个方面:全局级别的权限和对象级别的权限。全局级别的权限控制用户对整个 MySQL 系统的操作,对象级别的权限控制用户对数据库、表、列等对象的操作。 在 MySQL 中,授权命令是 GRANT,撤销命令是 REVOKE。下面介绍一下如何授予用户列级别的权限: 1. 首先,登录 MySQL 数据库。 2. 使用 GRANT 命令授予用户对指定列的 SELECT 权限,例如: GRANT SELECT (column_name) ON database_name.table_name TO 'user'@'host'; 这里的 column_name 是要授予 SELECT 权限的列名,database_name 和 table_name 分别是数据库名和表名,user 和 host 是要授予权限用户和主机名。 3. 如果要授予用户对多个列的 SELECT 权限,可以使用逗号分隔列名,例如: GRANT SELECT (column1, column2, column3) ON database_name.table_name TO 'user'@'host'; 4. 如果要授予用户对所有列的 SELECT 权限,可以使用 * 代替列名,例如: GRANT SELECT (*) ON database_name.table_name TO 'user'@'host'; 5. 如果要授予用户对指定列的 INSERT、UPDATE 或 DELETE 权限,可以将 SELECT 替换为相应的命令。 6. 如果要撤销用户对指定列的权限,可以使用 REVOKE 命令,例如: REVOKE SELECT (column_name) ON database_name.table_name FROM 'user'@'host'; 这里的参数和 GRANT 命令相同。 总之,MySQL 用户权限管理是非常重要的,可以通过授权和撤销命令来精细地控制用户对数据库、表、列等对象的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值