《MySQL如何查看用户授予的权限》要点:
本文介绍了MySQL如何查看用户授予的权限,希望对您有用。如果有疑问,可以联系我们。
- 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>
2:那么我们来创建一个测试账号test,授予数据库层级的权限.如下所示:
- 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,授予表层级的权限.如下所示:
- 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>
4:那么我们来创建一个测试账号test,授予列层级的权限.如下所示:
- 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>
5:那么我们来创建一个测试账号test,授子程序层级的权限.如下所示:
- 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>
所以,如果需要查看用户被授予的权限,就需要从这五个层级来查看被授予的权限.从上到下或从小到上,逐一检查各个层级被授予的权限.
转载请注明本页网址:
http://www.vephp.com/jiaocheng/5531.html