gpt4 book ai didi

mysql语句查询用户权限过程详解

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章mysql语句查询用户权限过程详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

在MySQL中,如何查看一个用户被授予了那些权限呢? 授予用户的权限可能分全局层级权限、数据库层级权限、表层级别权限、列层级别权限、子程序层级权限。具体分类如下:

全局层级 。

全局权限适用于一个给定服务器中的所有数据库。这些权限存储在mysql.user表中。GRANT ALL ON *.*和REVOKE ALL ON *.*只授予和撤销全局权限.

数据库层级 。

数据库权限适用于一个给定数据库中的所有目标。这些权限存储在mysql.db和mysql.host表中。GRANT ALL ON db_name.*和REVOKE ALL ON db_name.*只授予和撤销数据库权限.

表层级 。

表权限适用于一个给定表中的所有列。这些权限存储在mysql.tables_priv表中。GRANT ALL ON db_name.tbl_name和REVOKE ALL ON db_name.tbl_name只授予和撤销表权限.

列层级 。

列权限适用于一个给定表中的单一列。这些权限存储在mysql.columns_priv表中。当使用REVOKE时,您必须指定与被授权列相同的列.

子程序层级 。

CREATE ROUTINE, ALTER ROUTINE, EXECUTE和GRANT权限适用于已存储的子程序。这些权限可以被授予为全局层级和数据库层级。而且,除了CREATE ROUTINE外,这些权限可以被授予为子程序层级,并存储在mysql.procs_priv表中.

1:那么我们来创建一个测试账号test,授予全局层级的权限。如下所示:

?
1
2
3
4
5
mysql> grant select , insert on *.* to test@ '%' identified by 'test' ;
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges ;
Query OK, 0 rows affected (0.00 sec)
mysql>

那么可以用下面两种方式查询授予test的权限。如下所示:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
mysql> show grants for test;
+ --------------------------------------------------------------------------------------------------------------+
| Grants for test@% |
+ --------------------------------------------------------------------------------------------------------------+
| GRANT SELECT , INSERT ON *.* TO 'test' @ '%' IDENTIFIED BY PASSWORD '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29' |
+ --------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select * from mysql. user where user = 'test' \G;
*************************** 1. row ***************************
Host: %
User : test
Password : *94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29
Select_priv: Y
Insert_priv: Y
Update_priv: N
Delete_priv: N
Create_priv: N
Drop_priv: N
Reload_priv: N
Shutdown_priv: N
Process_priv: N
File_priv: N
Grant_priv: N
References_priv: N
Index_priv: N
Alter_priv: N
Show_db_priv: N
Super_priv: N
Create_tmp_table_priv: N
Lock_tables_priv: N
Execute_priv: N
Repl_slave_priv: N
Repl_client_priv: N
Create_view_priv: N
Show_view_priv: N
Create_routine_priv: N
Alter_routine_priv: N
Create_user_priv: N
Event_priv: N
Trigger_priv: N
Create_tablespace_priv: N
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
plugin: mysql_native_password
authentication_string:
password_expired: N
1 row in set (0.04 sec)
ERROR:
No query specified
mysql>

mysql语句查询用户权限过程详解

2:那么我们来创建一个测试账号test,授予数据库层级的权限。如下所示:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
mysql> drop user test;
Query OK, 0 rows affected (0.00 sec)
mysql> grant select , insert , update , delete on MyDB.* to test@ '%' identified by 'test' ;
Query OK, 0 rows affected (0.01 sec)
mysql>
mysql> select * from mysql. user where user = 'test' \G; --可以看到无任何授权。
mysql> select * from mysql.db where user = 'test' \G;
*************************** 1. row ***************************
Host: %
Db: MyDB
User : test
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: N
Drop_priv: N
Grant_priv: N
References_priv: N
Index_priv: N
Alter_priv: N
Create_tmp_table_priv: N
Lock_tables_priv: N
Create_view_priv: N
Show_view_priv: N
Create_routine_priv: N
Alter_routine_priv: N
Execute_priv: N
Event_priv: N
Trigger_priv: N
1 row in set (0.04 sec)
ERROR:
No query specified
mysql>
mysql> show grants for test;
+ -----------------------------------------------------------------------------------------------------+
| Grants for test@% |
+ -----------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test' @ '%' IDENTIFIED BY PASSWORD '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29' |
| GRANT SELECT , INSERT , UPDATE , DELETE ON `MyDB`.* TO 'test' @ '%' |
+ -----------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
mysql>

3:那么我们来创建一个测试账号test,授予表层级的权限。如下所示:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
mysql> drop user test;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges ;
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on MyDB.kkk to test@ '%' identified by 'test' ;
Query OK, 0 rows affected (0.01 sec)
mysql>
mysql> show grants for test;
+ -----------------------------------------------------------------------------------------------------+
| Grants for test@% |
+ -----------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test' @ '%' IDENTIFIED BY PASSWORD '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29' |
| GRANT ALL PRIVILEGES ON `MyDB`.`kkk` TO 'test' @ '%' |
+ -----------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
mysql> select * from mysql.tables_priv\G;
*************************** 1. row ***************************
Host: %
Db: MyDB
User : test
Table_name: kkk
Grantor: root@localhost
Timestamp : 0000-00-00 00:00:00
Table_priv: Select , Insert , Update , Delete , Create , Drop , References , Index , Alter , Create View ,Show view , Trigger
Column_priv:
1 row in set (0.01 sec)
ERROR:
No query specified
mysql> <br>

mysql语句查询用户权限过程详解

4:那么我们来创建一个测试账号test,授予列层级的权限。如下所示:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
mysql> drop user test;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges ;
Query OK, 0 rows affected (0.00 sec)
mysql> grant select (id, col1) on MyDB.TEST1 to test@ '%' identified by 'test' ;
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges ;
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> select * from mysql.columns_priv;
+ ------+------+------+------------+-------------+---------------------+-------------+
| Host | Db | User | Table_name | Column_name | Timestamp | Column_priv |
+ ------+------+------+------------+-------------+---------------------+-------------+
| % | MyDB | test | TEST1 | id | 0000-00-00 00:00:00 | Select |
| % | MyDB | test | TEST1 | col1 | 0000-00-00 00:00:00 | Select |
+ ------+------+------+------------+-------------+---------------------+-------------+
2 rows in set (0.00 sec)
mysql> show grants for test;
+ -----------------------------------------------------------------------------------------------------+
| Grants for test@% |
+ -----------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test' @ '%' IDENTIFIED BY PASSWORD '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29' |
| GRANT SELECT (id, col1) ON `MyDB`.`TEST1` TO 'test' @ '%' |
+ -----------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
mysql> <br>

mysql语句查询用户权限过程详解

5:那么我们来创建一个测试账号test,授子程序层级的权限。如下所示:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
mysql> DROP PROCEDURE IF EXISTS PRC_TEST;
Query OK, 0 rows affected (0.00 sec)
mysql> DELIMITER //
mysql> CREATE PROCEDURE PRC_TEST()
-> BEGIN
-> SELECT * FROM kkk;
-> END //
Query OK, 0 rows affected (0.00 sec)
mysql> DELIMITER ;
mysql> grant execute on procedure MyDB.PRC_TEST to test@ '%' identified by 'test' ;
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges ;
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> show grants for test;
+ -----------------------------------------------------------------------------------------------------+
| Grants for test@% |
+ -----------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test' @ '%' IDENTIFIED BY PASSWORD '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29' |
| GRANT EXECUTE ON PROCEDURE `MyDB`.`prc_test` TO 'test' @ '%' |
+ -----------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
mysql> select * from mysql.procs_priv where User = 'test' ;
+ ------+------+------+--------------+--------------+----------------+-----------+---------------------+
| Host | Db | User | Routine_name | Routine_type | Grantor | Proc_priv | Timestamp |
+ ------+------+------+--------------+--------------+----------------+-----------+---------------------+
| % | MyDB | test | PRC_TEST | PROCEDURE | root@localhost | Execute | 0000-00-00 00:00:00 |
+ ------+------+------+--------------+--------------+----------------+-----------+---------------------+
1 row in set (0.00 sec)
mysql> <br>

mysql语句查询用户权限过程详解

所以,如果需要查看用户被授予的权限,就需要从这五个层级来查看被授予的权限。从上到下或从小到上,逐一检查各个层级被授予的权限.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.

原文链接:https://www.cnblogs.com/wangchaoyuana/p/7545419.html 。

最后此篇关于mysql语句查询用户权限过程详解的文章就讲到这里了,如果你想了解更多关于mysql语句查询用户权限过程详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com