MySQL 資料庫的使用者權限簡介

當使用以下語法建立一個新的 MySQL 使用者時,

CREATE USER '<username>'@'localhost' IDENTIFIED BY '<password>';

這個使用者在一開始沒有什麼權限。可以說,它什麼都不能做。

它無法讀取任何現有資料庫的資料,更不能修改資料。甚至無法建立新的資料庫。

如果要讓使用者做任何事情,你必須授予權限給它。

你可以使用 GRANT 命令來這麼做。

我們可以使用 GRANT <permission>,使用以下權限關鍵字:

  • CREATE
  • DROP
  • DELETE
  • INSERT
  • SELECT
  • UPDATE
  • ALL PRIVILEGES

給使用者權限去建立新資料庫

GRANT CREATE ON *.* TO '<username>'@'localhost';

給使用者權限在特定資料庫中建立新表格

GRANT CREATE ON <database>.* TO '<username>'@'localhost';

給使用者權限讀取(查詢)特定資料庫

GRANT SELECT ON <database>.* TO '<username>'@'localhost';

給使用者權限讀取特定資料庫的表格

GRANT SELECT ON <database>.<table> TO '<username>'@'localhost';

給使用者權限在特定資料庫中插入、更新和刪除資料列

GRANT INSERT, UPDATE, DELETE ON <database>.* TO '<username>'@'localhost';

給使用者權限刪除特定資料庫的表格

GRANT DROP ON <database>.* TO '<username>'@'localhost';

給使用者權限刪除資料庫

GRANT DROP ON *.* TO '<username>'@'localhost';

給使用者在特定資料庫上所有權限

GRANT ALL PRIVILEGES ON <database>.* TO '<username>'@'localhost';

給使用者所有權限

GRANT ALL PRIVILEGES ON *.* TO '<username>'@'localhost';

撤銷一個權限

撤銷對於 <database>DROP 權限的例子:

REVOKE DROP ON <database>.* TO '<username>'@'localhost';

撤銷所有權限,執行以下命令:

REVOKE ALL PRIVILEGES ON *.* TO '<username>'@'localhost';

你可以執行以下命令來查看單一使用者的權限:

SHOW GRANTS FOR '<username>'@'localhost';