mysql的許可權:1、全域性許可權,適用於伺服器中的所有資料庫,儲存在「mysql.user」中;2、資料庫許可權,適用於資料庫中的所有目標,儲存在「mysql.db」和「mysql.host」中;3、表許可權,適用於表中的所有列;4、列許可權等等。
本教學操作環境:windows10系統、mysql8.0.22版本、Dell G3電腦。
許可權具體分類
1、全域性層級
全域性許可權適用於一個給定伺服器中的所有資料庫。這些許可權儲存在mysql.user表中。GRANT ALL ON *.*和REVOKE ALL ON *.*只授予和復原全域性許可權。
2、資料庫層級
資料庫許可權適用於一個給定資料庫中的所有目標。這些許可權儲存在mysql.db和mysql.host表中。GRANT ALL ON db_name.*和REVOKE ALL ON db_name.*只授予和復原資料庫許可權。
3、表層級
表許可權適用於一個給定表中的所有列。這些許可權儲存在mysql.tables_priv表中。GRANT ALL ON db_name.tbl_name和REVOKE ALL ON db_name.tbl_name只授予和復原表許可權。
4、列層級
列許可權適用於一個給定表中的單一列。這些許可權儲存在mysql.columns_priv表中。當使用REVOKE時,您必須指定與被授權列相同的列。
5、子程式層級
CREATE ROUTINE, ALTER ROUTINE, EXECUTE和GRANT許可權適用於已儲存的子程式。這些許可權可以被授予為全域性層級和資料庫層級。而且,除了CREATE ROUTINE外,這些許可權可以被授予為子程式層級,並儲存在mysql.procs_priv表中
補充知識:
1、全域性層級測試
建立一個測試賬號test,授予全域性層級的許可權。如下所示:
mysql> set global validate_password_policy=0; mysql> grant select,insert on *.* to test@'%' identified by 'test'; mysql> flush privileges;
用下面兩種方式查詢授予test的許可權。如下所示:
mysql> show grants for test; mysql> select * from mysql.user where user='test'G;
2、資料庫層級測試
建立一個測試賬號test,授予資料庫層級的許可權。如下所示:
mysql> drop user test; mysql> grant select,insert,update,delete on jpcpdb.* to test@'%' identified by 'test@123'; mysql> select * from mysql.user where user='test'G; --可以看到無任何授權。 mysql> show grants for test; mysql> select * from mysql.db where user='test'G;
3、表層級測試
建立一個測試賬號test,授予表層級的許可權。如下所示:
mysql> drop user test; mysql> flush privileges; mysql> grant all on jpcpdb.user to test@'%' identified by 'test@123'; mysql> show grants for test; mysql> select * from mysql.tables_privG;
4、列層級測試
建立一個測試賬號test,授予列層級的許可權。如下所示:
mysql> drop user test; mysql> flush privileges; mysql> grant select (id, name) on jpcpdb.user to test@'%' identified by 'test@123'; mysql> flush privileges; mysql> select * from mysql.columns_priv; mysql> show grants for test;
5、子程式層級測試
建立一個測試賬號test,授子程式層級的許可權。如下所示:
mysql> DROP PROCEDURE IF EXISTS PRC_TEST; mysql> DELIMITER // mysql> CREATE PROCEDURE PRC_TEST() -> BEGIN -> SELECT * FROM user; -> END // mysql> DELIMITER ; mysql> grant execute on procedure jpcpdb.PRC_TEST to test@'%' identified by 'test@123'; mysql> flush privileges; mysql> show grants for test;
mysql> select * from mysql.procs_priv where User='test';
總結
如果需要檢視使用者被授予的許可權,就需要從這五個層級來檢視被授予的許可權。從上到下或從小到上,逐一檢查各個層級被授予的許可權。
資料庫是一個 單位或是一個應用領域的通用資料處理系統,它儲存的是屬於企業和事業部門、 團體和個人的有關資料的 集合。資料庫中的資料是從全域性觀點出發建立的,按一定的 資料模型進行組織、描述和儲存。其結構基於資料間的自然聯絡,從而可提供一切必要的存取 路徑,且資料不再針對某一應用,而是面向全組織,具有整體的結構化特徵。
推薦學習:
以上就是mysql中有哪些許可權的詳細內容,更多請關注TW511.COM其它相關文章!