51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

mysq数据库服务权限管理相关命令

数据库服务权限管理

1 数据库服务权限管理
	查看数据库权限信息;
		show privileges;
		all privileges 代表了几乎所有的权限除 grant option 外,
	授权
		grant insert,select  on *.* to baimei@'%'
			给baimei 用户授权 inser,select 的权限
	取消授权
		revoke insert  on *.* from  baimei@'%';
			取消baimei用户的 insert 权限
	产看授权
		show grants for baimei@'%';
	生产环境 授权实践
		 create database bbs;
			创建数据库
		create user bbs@'192.168.%' identified by '123';
			创建管理数据库用户
		grant insert,select,update,delete on bbs.* to bbs@'192.168.%';
			进行管理用户授权
	1 权限信息存储位置 mysql库下
		user
			用户全局权限信息设置 如 grant  select  on  *.*
		db
			针对用户某个库权限信息设置
				grant inser  on  bbs.*
		tables_priv
			用户针对某个表权限信息设置
				gran inser on  bbs.clase
	2权限的角色划分 (8.0 新添的功能
		角色权限设置:
			第一步:创建角色
				create role baimei_rw, baimei_ro;
					创建2个不同的角色 信息
			第二步:设置角色权限
				grant  select,updat,insert,delete on  mysql.user to baimei_rw
					进行role 权限信息设定
			第三步:将用户划分到不同角色中
				 create user user01@'%' identified by '123';
				grant baimei_rw to user01@'%';
			   第四步:激活角色功能
				1自动激活
					set global acitvate_all_roles_on_login=on;
				2手动激活
					set default role all to user01@'%';
					角色激活后,可以查看角色信息
						select current_role();
						(需要重新连接数据库服务,进行查看)

在数据库服务中,权限管理可以用于针对不同的用户,限制登录管理数据库服务用户的操作行为,也可以区分不同用户的操作能力;

思考:系统权限和数据库权限作用在哪?

系统权限是作用于文件上的;

数据库权限是作用在用户上的,或者角色(相当于系统的用户组)上的;

 

数据库服务常见的权限管理定义设置:(采用具有的字符参数信息进行定义,并且权限是赋予数据库管理用户的)

数据库服务中可以授权的所有权限信息查看:

MySQL> show privileges;
输出展示的信息表示内容:

序号	输出列	解释说明
01	Privilege	表示可以授权的所有权限信息展示
02	Context	表示设置的权限可以对数据库服务哪些资源进行操作
03	Comment	对相应的权限功能进行简单解释说明
核心重要授权权限总结:

序号	权限	授权资源	解释说明
01	Select	Tables	可以对表进行操作,查询表中数据信息
02	Insert	Tables	可以对表进行操作,插入表中数据信息
03	Update	Tables	可以对表进行操作,修改表中数据信息
04	Delete	Tables	可以对表进行操作,删除表中数据信息
05	Alter	Tables	可以对表进行操作,修改表中结构信息(元数据-属性)
06	Index	Tables	可以对表进行操作,删除或创建表中的索引信息
07	Create	Databases,Tables	可以对表和库进行操作,用于创建数据库和表信息
08	Drop	Databases,Tables	可以对表和库进行操作,用于删除数据库和表信息
说明:all privileges(all)包含查看的所有权限信息,但是唯独缺了Grant option,不能授权用户,此权限只能给root@local用户

 

数据库服务中用户授权信息的存放位置:授权表 baimei@% -- select update

# 切换进入到默认mysql数据库中
mysql> use mysql;
​
# 查看数据库中的信息
mysql> show tables;
-- 查看mysql数据库中的表信息   
常见的授权表信息说明:

序号	授权表名称	解释说明
01	user	主要用于存储用户、主机域、密码、加密插件等信息,同时还存储了*.*级别的权限(全局权限)
02	db	主要用于存储用户、主机域等信息,同时还存储了单库级别的权限(局部权限)
03	tables_priv	主要用于存储用户、主机域等信息,同时还存储了单表级别的权限(局部权限)
说明:以上授权表信息了解作用即可,不建议采用手工方式对授权表中的数据进行修改调整

 

01 设置数据库服务用户授权

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

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

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

进入到数据库环境中,执行以下SQL语句进行设置:

# 授权语法格式
MySQL> grant  all    on     授权对象范围   to        权限赋予用户信息
MySQL> grant  all    on    *       .      *       to     blog@'192.168.30.%';
               授权   权限         库信息     表信息           用户       主机域
​
# 对数据库和表同时进行授权方法
MySQL> grant  all  on   *.*
-- 表示对所有的数据库和所有的表进行授权
MySQL> grant  all  on   baimei.*
-- 表示对指定的数据库中所有的表进行授权
MySQL> grant  all  on   baimei.t1
-- 表示对指定的数据库中指定的表进行授权
 

具体授权权限操作步骤:

MySQL> grant  all  on   * . *   to   oldgirl@'192.168.30.%';
MySQL> grant  Insert,Delete,Update,Select  on   * . *   to   baimei@'192.168.30.%';
​
# 创建远程特权管理用户(练习)
MySQL > create user root@'10.0.0.%' identified by '123456';
MySQL > grant all on *.* to root@'10.0.0.%'
 

具体回收权限操作步骤:

mysql> grant  insert,update,delete,select  on   * . *   to   oldbaby@'192.168.30.%';
Query OK, 0 rows affected (0.00 sec)
-- 数据库服务用户授权操作
​
mysql> show grants for oldbaby@'192.168.30.%';
+-----------------------------------------------------------------------------------------------------------+
| Grants for oldbaby@192.168.30.%                                                                                     |
+-----------------------------------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO `oldbaby`@`192.168.30.%`       |
+-----------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
-- 数据库服务用户权限授权成功
​
mysql> revoke delete on *.* from oldbaby@'192.168.30.%';
Query OK, 0 rows affected (0.00 sec)
-- 数据库服务用户回收权限
​
mysql> show grants for oldbaby@'192.168.30.%';
+-----------------------------------------------------------------+
| Grants for oldbaby@192.168.30.%                                 |
+-----------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE ON *.* TO `oldbaby`@`192.168.30.%` |
+-----------------------------------------------------------------+
1 row in set (0.00 sec)
-- 数据库服务用户权限回收成功
 

02 查看数据库服务用户权限

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

mysql> show grants for xiaoQ@'192.168.30.%';
1665905280711

授权操作实践过程:

#  数据库用户权限设置实践
[root@baimei ~]# mysql -uroot -pbaimei123
MySQL> grant all on *.* to blog@'192.168.30.%';
-- 授权blog作为管理员,但是不具有创建用户权利
MySQL> flush privileges;
-- blog@'192.168.30.%' 权限,就相当于管理员,但是缺少一个创建用户权限
​
# 数据库用户权限设置查看
MySQL> show grants for blog@'192.168.30.%';
--再查看发现权限变化ALL PRIVILEGES,重新登录数据库可以对数据库操作。
 

企业生产情况授权思路:

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

序号	权限	互联网应用
01	SELECT 查询数据	访问网站页面时,表示浏览查看数据信息;
02	INSERT 插入数据	访问网站页面时,表示发表文章数据信息;
03	UPDATE 修改数据	访问网站页面时。表示修改文章数据信息;
04	DELETE 删除数据	访问网站页面时,表示删除文章数据信息;
# 生产常规授权实践
MySQL> create database bbs; 
-- 创建数据库操作
MySQL> create user bbs@'192.168.56.%' identified by '123'; 
-- 创建管理数据库用户
MySQL> grant insert,select,update,delete on bbs.* to bbs@'192.168.56.%'; 
-- 进行管理用户授权
​
# 授权等价于root管理用户
MySQL> grant all on *.* to baimei@'localhost' identified by 'baimei123' with grant option;
MySQL> flush privileges;
 

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

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

具体操作演示过程:

# 指定用户操作特定数据库时,具有共性相同的权限:分为运维权限(rw) 分为开发权限(ro)
mysql>help create role;
-- 查看role创建的方法
​
# 创建指定的role信息
CREATE ROLE 'admin', 'developer';
CREATE ROLE 'webapp'@'localhost';
-- 创建role信息的语句结构信息,不加@信息表示角色白名单为%方式,实际还要根据具体用户定义
​
mysql> create role baimei_rw,baimei_r;
-- 创建两个不同的role信息
-- baimei_rw:   baimei.* rw(select,update,insert,delete)    
-- baimei_r:      baimei.* r(select)  
​
# 进行role权限信息设定
mysql> grant select on baimei.* to baimei_r;
Query OK, 0 rows affected (0.00 sec)
​
mysql> grant select,update,insert,delete on baimei.* to baimei_rw;
Query OK, 0 rows affected (0.00 sec)
​
# 将指定role信息与相应的用户信息进行捆绑
mysql> create user user01@'%' identified by '123';
Query OK, 0 rows affected (0.00 sec)
​
mysql> create user user02@'%' identified by '123';
Query OK, 0 rows affected (0.00 sec)
-- 创建需要捆绑role权限的用户信息
​
mysql> grant baimei_r to user01@'%';
Query OK, 0 rows affected (0.00 sec)
​
mysql> grant baimei_rw to user02@'%';
Query OK, 0 rows affected (0.00 sec)
-- 实现不同的role信息与不同的用户进行捆绑
​
# 进行角色信息激活
# 方式一:手动激活角色
mysql> SET DEFAULT ROLE ALL TO 'lei_test'@'localhost';
mysql> set default role all to user01@'%';
mysql> set default role all to user02@'%';
-- 利用数据库管理员账号手工激活角色
​
mysql> select current_role();
+----------------+
| current_role() |
+----------------+
| `baimei_r`@`%` |
+----------------+
1 row in set (0.00 sec)
-- user01登录数据库,会显示对应激活的角色信息
​
mysql> select current_role();
+----------------+
| current_role() |
+----------------+
| `baimei_rw`@`%` |
+----------------+
1 row in set (0.00 sec)
-- user02登录数据库,会显示对应激活的角色信息
​
#方式二:实现自动激活用户角色信息
mysql > set global activate_all_roles_on_login=on;
​
[root@db-01 ~]# mysql -uuser01 -p123 -h10.0.0.51
mysql> select current_role();
+----------------+
| current_role() |
+----------------+
| `baimei_r`@`%` |
+----------------+
1 row in set (0.00 sec)
-- user01登录数据库,会显示对应激活的角色信息
​
[root@db-01 ~]# mysql -uuser02 -p123 -h10.0.0.51
mysql> select current_role();
+-----------------+
| current_role()  |
+-----------------+
| `baimei_rw`@`%` |
+-----------------+
1 row in set (0.01 sec)
-- user02登录数据库,会显示对应激活的角色信息
​
# 进行用户操作验证
mysql> select * from baimei.t1;
+----------+
| name     |
+----------+
| zhangsan |
| lisi     |
+----------+
2 rows in set (0.04 sec)
mysql> insert into baimei.t1 values ('xiaoQ');
ERROR 1142 (42000): INSERT command denied to user 'user01'@'10.0.0.51' for table 't1'
-- user01只读用户登录数据库,只能查看操作,不能进行其他操作
​
mysql> select * from baimei.t1;
+--------+
| name   |
+--------+
| baimei |
| lisi   |
+--------+
2 rows in set (0.00 sec)
mysql> insert into baimei.t1 values ('xiaoQ');
-- user02读写用户登录数据库,可以进行其他操作任务
1.3.3 数据库服务连接管理
赞(3)
未经允许不得转载:工具盒子 » mysq数据库服务权限管理相关命令