首頁  >  文章  >  資料庫  >  mysql有哪些權限

mysql有哪些權限

WBOY
WBOY原創
2022-05-16 15:28:277773瀏覽

mysql的權限:1、全域權限,適用於伺服器中的所有資料庫,儲存在「mysql.user」中;2、資料庫權限,適用於資料庫中的所有目標,儲存在「mysql. db」和「mysql.host」中;3、表格權限,適用於表中的所有欄位;4、列權限等等。

mysql有哪些權限

本教學操作環境:windows10系統、mysql8.0.22版本、Dell G3電腦。

mysql有哪些權限

權限具體分類

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;

mysql有哪些權限

用下面兩種方式查詢授予test的權限。如下所示:

mysql> show grants for test;
mysql> select * from mysql.user where user='test'G;

mysql有哪些權限

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;

mysql有哪些權限

mysql有哪些權限

#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;

mysql有哪些權限

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;

mysql有哪些權限

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有哪些權限

#總結

#如果需要檢視使用者被授予的權限,就需要從這五個層級來查看被授予的權限。從上到下或從小到上,逐一檢查各層級被授予的權限。

資料庫是一個 單位或是一個應用領域的一般資料處理系統,它儲存的是屬於企業和事業部門、 團體和個人的相關資料的 集合。資料庫中的資料是從全局觀點出發建立的,並依照一定的 資料模型進行組織、描述和儲存。其結構基於資料間的自然聯繫,從而提供一切必要的訪問 路徑,且資料不再針對某一應用,而是面向全組織,具有整體的結構化特徵。

推薦學習:mysql影片教學

#

以上是mysql有哪些權限的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn