mysql 权限详解_MySQL权限详解

一.权限表

mysql数据库中的3个权限表:user 、db、 host

权限表的存取过程是:

1)先从user表中的host、 user、 password这3个字段中判断连接的IP、用户名、密码是否存在表中,存在则通过身份验证;

2) 通过权限验证,进行权限分配时,按照user?db?tables_priv?columns_priv的顺序进行分配。即先检查全局权限表 user,如果user中对应的权限为Y,则此用户对所有数据库的权限都为Y,将不再检查db, tables_priv,columns_priv;如果为N,则到db表中检查此用户对应的具体数据库,并得到db中为Y的权限;如果db中为N,则检 查tables_priv中此数据库对应的具体表,取得表中的权限Y,以此类推。

二.MySQL各种权限(共27个)

(以下操作都是以root身份登陆进行grant授权,以p1@localhost身份登陆执行各种命令。)

1. usage

连接(登陆)权限,建立一个用户,就会自动授予其usage权限(默认授予)。

mysql> grant usage on *.* to ‘p1′@’localhost’ identified by ‘123′;

该权限只能用于数据库登陆,不能执行任何操作;且usage权限不能被回收,也即REVOKE用户并不能删除用户。

2. select

必须有select的权限,才可以使用select table

mysql> grant select on pyt.* to ‘p1′@’localhost’;

mysql> select * from shop;

3. create

必须有create的权限,才可以使用create table

mysql> grant create on pyt.* to ‘p1′@’localhost’;

4. create routine

必须具有create routine的权限,才可以使用{create |alter|drop} {procedure|function}

mysql> grant create routine on pyt.* to ‘p1′@’localhost’;

当授予create routine时,自动授予EXECUTE, ALTER ROUTINE权限给它的创建者:

mysql> show grants for ‘p1′@’localhost’;

+—————————————————————————+

Grants for p1@localhost

+————————————————————————–+

| GRANT USAGE ON *.* TO ‘p1′@’localhost’ IDENTIFIED BY PASSWORD ‘*23AE809DDACAF96AF0FD78ED04B6A265E05AA257′ |

| GRANT SELECT, CREATE, CREATE ROUTINE ON `pyt`.* TO ‘p1′@’localhost’|

| GRANT EXECUTE, ALTER ROUTINE ON PROCEDURE `pyt`.`pro_shop1` TO ‘p1′@’localhost’ |

+————————————————————————————-+

5. create temporary tables(注意这里是tables,不是table)

必须有create temporary tables的权限,才可以使用create temporary tables.

mysql> grant create temporary tables on pyt.* to ‘p1′@’localhost’;

[mysql@mydev ~]$ mysql -h localhost -u p1 -p pyt

mysql> create temporary table tt1(id int);

6. create view

必须有create view的权限,才可以使用create view

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值