MySQL权限系统详解

一、基本介绍
MySQL 的权限系统主要存储在几个被称为 grant tables 的系统表中,即:mysql.User,mysql.db,mysql.Host,mysql.table_priv 和 mysql.column_priv。
由于权限信息数据量比较小,而且访问又非常频繁,所以 Mysql 在启 动的时候,就会将所有的权限信息都 Load 到内存中保存在几个特定的结构中。所以才有我 们每次手工修改了权限相关的表之后,都需要执行“FLUSH PRIVILEGES ” 命令重新加载 MySQL 的权限信息。
如果我们通过 GRANT , REVOKE 或者 DROP USER 命令来修改相关权限,则 不需要手工执行 FLUSH PRIVILEGES 命令,因为通过 GRANT,REVOKE 或者 DROP USER 命令所 做的权限修改在修改系统表的同时也会更新内存结构中的权限信息。

二、权限级别
MySQL 中的权限分为五个级别
  1. Global Level
Global Level 的权限控制又称为全局权限控制,所有权限信息都保存在 mysql.user 表 中,如果一个权限是以 Global Level 来授予的,则会覆盖其他所有级别的相同权 限设置,Global Level 主要有如下这些权限 (以下为5.0.3以上版本拥有权限),授权主要使用*.*命令,如: GRANT SELECT,UPDATE,DELETE,INSERT ON *.*  TO 'test'@'localhost';

权限

权限级别

权限说明

CREATE

数据库、表或索引

创建数据库、表或索引权限

DROP

数据库或表

删除数据库或表权限

GRANT OPTION

数据库、表或保存的程序

赋予权限选项

REFERENCES

</
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 5.7 的权限系统主要分为以下几个方面: 1. 用户管理:包括创建、修改、删除用户及其密码等。 2. 权限管理:包括授权、回收权限等。 3. 角色管理:角色是一组权限的集合,可以将角色授权给用户,简化权限管理。 4. 权限检查:在用户访问数据库时进行权限检查,决定用户是否有权进行操作。 下面是具体的权限详解: 1. 用户管理 创建用户:可以使用 CREATE USER 语句创建用户。例如,创建一个名为 "test" 的用户并设置密码: ``` CREATE USER 'test'@'localhost' IDENTIFIED BY 'password'; ``` 修改用户:可以使用 ALTER USER 语句修改用户信息,例如,修改用户的密码: ``` ALTER USER 'test'@'localhost' IDENTIFIED BY 'new_password'; ``` 删除用户:可以使用 DROP USER 语句删除用户: ``` DROP USER 'test'@'localhost'; ``` 2. 权限管理 授权:可以使用 GRANT 语句授权给用户或角色执行某些操作的权限。例如,授权用户 "test" 在 "example" 数据库查询、插入、更新和删除的权限: ``` GRANT SELECT, INSERT, UPDATE, DELETE ON example.* TO 'test'@'localhost'; ``` 回收权限:可以使用 REVOKE 语句回收用户或角色的某些权限。例如,回收用户 "test" 在 "example" 数据库删除数据的权限: ``` REVOKE DELETE ON example.* FROM 'test'@'localhost'; ``` 3. 角色管理 创建角色:可以使用 CREATE ROLE 语句创建角色。例如,创建一个名为 "developer" 的角色: ``` CREATE ROLE developer; ``` 授权角色:可以使用 GRANT 语句将权限授予角色。例如,将 "developer" 角色授权在 "example" 数据库查询的权限: ``` GRANT SELECT ON example.* TO developer; ``` 将角色授权给用户:可以使用 GRANT 语句将角色授权给用户。例如,将 "developer" 角色授权给用户 "test": ``` GRANT developer TO 'test'@'localhost'; ``` 回收角色授权:可以使用 REVOKE 语句回收角色的授权。例如,将 "developer" 角色从用户 "test" 回收: ``` REVOKE developer FROM 'test'@'localhost'; ``` 删除角色:可以使用 DROP ROLE 语句删除角色。例如,删除 "developer" 角色: ``` DROP ROLE developer; ``` 4. 权限检查 MySQL用户访问数据库时会进行权限检查,判断用户是否有权限进行操作。如果用户没有权限,则会拒绝该操作并返回错误信息。例如,当用户 "test" 尝试在 "example" 数据库删除数据时,如果该用户没有删除数据的权限,则会返回以下错误信息: ``` ERROR 1142 (42000): DELETE command denied to user 'test'@'localhost' for table 'example' ``` 以上就是 MySQL 5.7 的权限系统详解

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值