mysql怎麼增加許可權

2022-04-12 16:00:21

mysql中可用GRANT語句為使用者增加許可權,語法「GRANT 許可權型別 ON 許可權級別值 TO user [IDENTIFIED BY '密碼'] [WITH子句];」;其中引數「user」表示使用者賬戶,格式為「'使用者名稱'@'主機名'」。

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

在 MySQL 中,可以利用GRANT 語句為使用者授權,增加許可權。

其語法格式如下:

GRANT priv_type [(column_list)] ON database.table
TO user [IDENTIFIED BY 'password']
[WITH with_option [with_option]...]

其中:

  • priv_type 參數列示許可權型別;

  • columns_list 參數列示許可權作用於哪些列上,省略該引數時,表示作用於整個表;

  • database.table 用於指定許可權的級別;

  • user 參數列示使用者賬戶,由使用者名稱和主機名構成,格式是「'username'@'hostname'」;

  • IDENTIFIED BY 引數用來為使用者設定密碼;

  • password 引數是使用者的新密碼。

MySQL 中可以授予的許可權有如下幾組:

  • 列許可權,和表中的一個具體列相關。例如,可以使用 UPDATE 語句更新表 students 中 name 列的值的許可權。

  • 表許可權,和一個具體表中的所有資料相關。例如,可以使用 SELECT 語句查詢表 students 的所有資料的許可權。

  • 資料庫許可權,和一個具體的資料庫中的所有表相關。例如,可以在已有的資料庫 mytest 中建立新表的許可權。

  • 使用者許可權,和 MySQL 中所有的資料庫相關。例如,可以刪除已有的資料庫或者建立一個新的資料庫的許可權。

對應地,在 GRANT 語句中可用於指定許可權級別的值有以下幾類格式:

  • *:表示當前資料庫中的所有表。

  • *.*:表示所有資料庫中的所有表。

  • db_name.*:表示某個資料庫中的所有表,db_name 指定資料庫名。

  • db_name.tbl_name:表示某個資料庫中的某個表或檢視,db_name 指定資料庫名,tbl_name 指定表名或檢視名。

  • db_name.routine_name:表示某個資料庫中的某個儲存過程或函數,routine_name 指定儲存過程名或函數名。

  • TO 子句:如果許可權被授予給一個不存在的使用者,MySQL 會自動執行一條 CREATE USER 語句來建立這個使用者,但同時必須為該使用者設定密碼。

在 MySQL 中,擁有 GRANT 許可權的使用者才可以執行 GRANT 語句.

範例:

使用 GRANT 語句建立一個新的使用者 testUser,密碼為 testPwd。使用者 testUser 對所有的資料有查詢、插入許可權,並授予 GRANT 許可權。

mysql> GRANT SELECT,INSERT ON *.*
    -> TO 'testUser'@'localhost'
    -> IDENTIFIED BY 'testPwd'
    -> WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.05 sec)

使用 SHOW GRANTS 語句查詢使用者 testUser 的許可權,如下所示。

1.png

擴充套件知識:許可權型別說明

1)授予資料庫許可權時,<許可權型別>可以指定為以下值:

許可權名稱對應user表中的欄位說明
SELECTSelect_priv表示授予使用者可以使用 SELECT 語句存取特定資料庫中所有表和檢視的許可權。
INSERTInsert_priv表示授予使用者可以使用 INSERT 語句向特定資料庫中所有表新增資料行的許可權。
DELETEDelete_priv表示授予使用者可以使用 DELETE 語句刪除特定資料庫中所有表的資料行的許可權。
UPDATEUpdate_priv表示授予使用者可以使用 UPDATE 語句更新特定資料庫中所有資料表的值的許可權。
REFERENCESReferences_priv表示授予使用者可以建立指向特定的資料庫中的表外來鍵的許可權。
CREATECreate_priv表示授權使用者可以使用 CREATE TABLE 語句在特定資料庫中建立新表的許可權。
ALTERAlter_priv 表示授予使用者可以使用 ALTER TABLE 語句修改特定資料庫中所有資料表的許可權。
SHOW VIEWShow_view_priv表示授予使用者可以檢視特定資料庫中已有檢視的檢視定義的許可權。
CREATE ROUTINECreate_routine_priv表示授予使用者可以為特定的資料庫建立儲存過程和儲存函數的許可權。
ALTER ROUTINEAlter_routine_priv表示授予使用者可以更新和刪除資料庫中已有的儲存過程和儲存函數的許可權。
INDEXIndex_priv表示授予使用者可以在特定資料庫中的所有資料表上定義和刪除索引的許可權。
DROPDrop_priv表示授予使用者可以刪除特定資料庫中所有表和檢視的許可權。
CREATE TEMPORARY TABLESCreate_tmp_table_priv表示授予使用者可以在特定資料庫中建立臨時表的許可權。
CREATE VIEWCreate_view_priv表示授予使用者可以在特定資料庫中建立新的檢視的許可權。
EXECUTE ROUTINEExecute_priv表示授予使用者可以呼叫特定資料庫的儲存過程和儲存函數的許可權。
LOCK TABLESLock_tables_priv表示授予使用者可以鎖定特定資料庫的已有資料表的許可權。
ALL 或 ALL PRIVILEGES 或 SUPERSuper_priv表示以上所有許可權/超級許可權

2) 授予表許可權時,<許可權型別>可以指定為以下值:

許可權名稱對應user表中的欄位說明
SELECTSelect_priv授予使用者可以使用 SELECT 語句進行存取特定表的許可權
INSERTInsert_priv授予使用者可以使用 INSERT 語句向一個特定表中新增資料行的許可權
DELETEDelete_priv授予使用者可以使用 DELETE 語句從一個特定表中刪除資料行的許可權
DROPDrop_priv授予使用者可以刪除資料表的許可權
UPDATEUpdate_priv授予使用者可以使用 UPDATE 語句更新特定資料表的許可權
ALTERAlter_priv 授予使用者可以使用 ALTER TABLE 語句修改資料表的許可權
REFERENCESReferences_priv授予使用者可以建立一個外來鍵來參照特定資料表的許可權
CREATECreate_priv授予使用者可以使用特定的名字建立一個資料表的許可權
INDEXIndex_priv授予使用者可以在表上定義索引的許可權
ALL 或 ALL PRIVILEGES 或 SUPERSuper_priv所有的許可權名

3) 授予列許可權時,<許可權型別>的值只能指定為 SELECT、INSERT 和 UPDATE,同時許可權的後面需要加上列名列表 column-list。

4) 最有效率的許可權是使用者許可權。

授予使用者許可權時,<許可權型別>除了可以指定為授予資料庫許可權時的所有值之外,還可以是下面這些值:

  • CREATE USER:表示授予使用者可以建立和刪除新使用者的許可權。

  • SHOW DATABASES:表示授予使用者可以使用 SHOW DATABASES 語句檢視所有已有的資料庫的定義的許可權。

【相關推薦:】

以上就是mysql怎麼增加許可權的詳細內容,更多請關注TW511.COM其它相關文章!