MySQL权限管理实战:授权、回收、查看与版本差异

来自AI助手的总结
介绍MySQL用户授权、回收权限及角色管理实践。
MySQL权限管理实战:授权、回收、查看与版本差异

一、设置数据库服务用户授权

通过理解数据库内部结构,可以知晓,数据库是一个很大的仓库,里面包含多个库,每个库中有多个表,每个表中有多个行和列;

当然作为数据库服务管理用户,要管理的不仅仅是库和表,其实还有视图、触发器、存储过程等和数据库有关的信息;

因此,在某些时候创建完用户信息,还需要对创建的用户进行授权,就是让不同用户拥有管理库和表对象的权限。

1.1 授权语法格式

授权语法格式

# 授权语法格式
MySQL> grant  all    on     授权对象范围   to        权限赋予用户信息
MySQL> grant  all    on    *       .      *       to     blog@'192.168.30.%';
               授权   权限         库信息     表信息           用户       主机域

1、对所有的数据库和所有的表进行授权


mysql> grant  all  on   *.*

2、对指定的数据库中所有的表进行授权


mysql> grant  all  on   oldboy.*

3、对指定的数据库中指定的表进行授权


mysql> grant  all  on   oldboy.t1

1.2 具体授权权限操作步骤

1、创建测试用户user05


mysql> create user user05@'192.168.1.%' identified by '123456';

2、赋权给用户


mysql> grant  Insert,Delete,Update,Select  on   * . *   to user05@'192.168.1.%';

3、查看用户权限

mysql> show grants for user05@'192.168.1.%';
+-----------------------------------------------------------------------+
| Grants for user05@192.168.1.%                                         |
+-----------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO `user05`@`192.168.1.%` |
+-----------------------------------------------------------------------+
1 row in set (0.00 sec)

1.3 具体回收权限操作步骤

1、数据库服务用户回收权限


mysql> revoke delete on *.* from user05@'192.168.1.%';

2、查看用户权限,数据库服务用户权限delete回收成功


mysql> show grants for user05@'192.168.1.%';

Day001-数据库服务安装配置过程-图24

二、查看数据库服务用户授权

当用户授权操作完毕后,可以对授权的用户进行查看确认:


mysql> show grants for user05@'192.168.1.%';

企业生产情况授权思路:

企业生产库表授权一定要更小,最小的授权最大的安全,给业务用户常规授权,包含对内容的增删改查;

序号 权限 互联网应用
01 SELECT 查询数据 访问网站页面时,表示浏览查看数据信息;
02 INSERT 插入数据 访问网站页面时,表示发表文章数据信息;
03 UPDATE 修改数据 访问网站页面时。表示修改文章数据信息;
04 DELETE 删除数据 访问网站页面时,表示删除文章数据信息;

生产常规授权实践:

1、进入数据库并创建数据库bbs


[root@master ~]# mysql -uroot -p123456

mysql> create database bbs;

2、创建管理数据库用户


mysql> create user bbs@'192.168.1.%' identified by '123456';

3、进行管理用户授权


mysql> grant insert,select,update,delete on bbs.* to bbs@'192.168.1.%';

授权等价于root管理用户


mysql> grant all on *.* to bbs@'192.168.1.%' identified by '123456' with grant option;

mysql> flush privileges;

相关参数说明:

  • with grant option:允许 ‘bbs’ 用户将这些权限授予其他用户

特殊数据库权限说明:

特殊权限 特殊权限说明
Usage 只有连接数据库的权限
all 将管理员身份的所有权限可以赋予其他用户,唯独没有grant option权限
grant option 给其他用户赋予权限能力

特殊数据库权限授权方法:

进行用户权限授权(grant option)情况一:


# 授权命令语法格式

create user 'user'@'ip' identified by 'password';

grant SELECT on op_db.* to 'user'@'ip' with grant option;

# 授权命令实际应用

create user 'root'@'127.0.0.1' identified by '****';

GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' WITH GRANT OPTION;

flush privileges;

进行用户权限授权(grant option)情况二:


grant SELECT on op_db.* to 'user'@'ip' identified by 'password' with grant option;

flush privileges;

说明:WITH GRANT OPTION 这个选项表示该用户可以将自己拥有的权限授权给别人。

经常有人在创建操作用户的时候不指定WITH GRANT OPTION选项,导致后来该用户不能使用GRANT命令创建用户;

或者给其它用户授权。如果不想这个用户有这个grant的权限,可以不加这句;

三、数据库服务权限管理特性(5.7与8.0权限管理区别)

之前的版本,在设置权限信息时,是能针对用户设置权限

之后版本,出现了数据库服务中对用户的role支持,表示可以将企业中常用的权限汇总打包为一个特定的role信息,在赋予给指定用户;

指定用户操作特定数据库时,具有共性相同的权限:分为运维权限(rw) 分为开发权限(ro)

具体操作演示过程:

1、查看role创建的方法


mysql> help create role;

2、创建指定的role信息

(1) 创建多个角色


mysql> CREATE ROLE 'admin', 'developer';

(2) 创建了一个名为 ‘webapp’ 的角色,并将其限制在 ‘localhost’ 上,不加@信息表示角色白名单为%方式,实际还要根据具体用户定义


mysql> CREATE ROLE 'webapp'@'localhost';

3、创建管理数据库信息并创建表插入数据

mysql> create database db01;
mysql> use db01;
mysql> create table stu(id int);
mysql> insert into stu values(1);
mysql> insert into stu values(2);
mysql> insert into stu values(3);

结果验证

mysql> select * from db01.stu;
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
+------+
3 rows in set (0.00 sec)

4、创建两个不同的role组信息


mysql> create role db01_rw, db01_r;

相关参数说明:

  • db01_rw: db01.* rw(select,update,insert,delete)

  • db01_r: db01.* r(select)

5、进行role权限信息设定


mysql> grant select on db01.* to db01_r;

mysql> grant select,update,insert,delete on db01.* to db01_rw;

6、将指定role信息与相应的用户信息进行捆绑

(1) 创建需要捆绑role权限的用户信息


mysql> create user user01@'%' identified by '123';

mysql> create user user02@'%' identified by '123';

(2) 实现不同的role信息与不同的用户进行捆绑


mysql> grant db01_r to user01@'%';

mysql> grant db01_rw to user02@'%';

6、进行角色信息激活

(1) 方式一:手动激活角色

利用数据库管理员账号手工激活角色


mysql> set default role all to user01@'%';

mysql> set default role all to user02@'%';

user01登录数据库,会显示对应激活的角色信息

[root@master ~]# mysql -uuser01 -p123 -h192.168.1.25
mysql> select current_role();
+----------------+
| current_role() |
+----------------+
| `db01_r`@`%`   |
+----------------+
1 row in set (0.00 sec)

user02登录数据库,会显示对应激活的角色信息

[root@master ~]# mysql -uuser02 -p123 -h192.168.1.25
mysql> select current_role();
+----------------+
| current_role() |
+----------------+
| `db01_rw`@`%`  |
+----------------+
1 row in set (0.00 sec)

(2) 方式二:实现自动激活用户角色信息

设置自动激活用户角色信息


mysql > set global activate_all_roles_on_login=on;

检查是否设置,0代表没有设置,1代表设置

mysql> select @@activate_all_roles_on_login;
+-------------------------------+
| @@activate_all_roles_on_login |
+-------------------------------+
|                             0 |
+-------------------------------+
1 row in set (0.00 sec)

user01登录数据库,会显示对应激活的角色信息

[root@master ~]# mysql -uuser01 -p123 -h192.168.1.25
mysql> select current_role();
+----------------+
| current_role() |
+----------------+
| `db01_r`@`%`   |
+----------------+
1 row in set (0.00 sec)

user02登录数据库,会显示对应激活的角色信息

[root@master ~]# mysql -uuser02 -p123 -h192.168.1.25
mysql> select current_role();
+----------------+
| current_role() |
+----------------+
| `db01_rw`@`%`  |
+----------------+
1 row in set (0.00 sec)

7、进行用户操作验证

user01只读用户登录数据库,只能查看操作,不能进行其他操作

mysql> select * from db01.stu;
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
+------+
3 rows in set (0.00 sec)
mysql> delete from stu where id=1;
ERROR 1142 (42000): DELETE command denied to user 'user01'@'master' for table 'stu'

user02 user02读写用户登录数据库,可以进行其他操作任务


mysql> delete from db01.stu where id=1;

Query OK, 1 row affected (0.00 sec)

mysql> select * from db01.stu;

+------+

| id   |

+------+

|    2 |
|    3 |

+------+

2 rows in set (0.00 sec)

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容