文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式 Letter) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  安全性  /  存取控制與帳號管理

8.2 存取控制與帳號管理

MySQL 允許建立帳號,讓客戶端使用者連線至伺服器並存取伺服器管理的資料。MySQL 權限系統的主要功能是驗證從給定主機連線的使用者,並將該使用者與資料庫的權限(例如 SELECTINSERTUPDATEDELETE)建立關聯。其他功能包括授與管理操作權限的能力。

為了控制哪些使用者可以連線,每個帳戶都可以被指派驗證憑證,例如密碼。MySQL 帳戶的使用者介面包含 SQL 陳述式,例如 CREATE USERGRANTREVOKE。請參閱 第 15.7.1 節,「帳戶管理陳述式」

MySQL 權限系統確保所有使用者只能執行被允許的操作。身為使用者,當您連線到 MySQL 伺服器時,您的身分是由您連線的主機您指定的使用者名稱所決定。當您連線後發出請求時,系統會根據您的身分和您想要做的事情來授予權限。

MySQL 會同時考慮您的主機名稱和使用者名稱來識別您,因為沒有理由假設給定的使用者名稱在所有主機上都屬於同一個人。例如,從 office.example.com 連線的使用者 joe 不一定是與從 home.example.com 連線的使用者 joe 是同一個人。MySQL 藉由讓您能夠區分不同主機上恰好具有相同名稱的使用者來處理此問題:您可以為 joeoffice.example.com 連線授予一組權限,並為 joehome.example.com 連線授予另一組不同的權限。若要查看給定帳戶擁有哪些權限,請使用 SHOW GRANTS 陳述式。例如

SHOW GRANTS FOR 'joe'@'office.example.com';
SHOW GRANTS FOR 'joe'@'home.example.com';

在內部,伺服器將權限資訊儲存在 mysql 系統資料庫的授權表格中。MySQL 伺服器會在啟動時將這些表格的內容讀取到記憶體中,並根據記憶體中的授權表格副本來決定存取控制。

當您執行連線到伺服器的用戶端程式時,MySQL 存取控制會涉及兩個階段

階段 1:伺服器會根據您的身分,以及您是否能夠提供正確的密碼來驗證您的身分,來接受或拒絕連線。

階段 2:假設您可以連線,伺服器會檢查您發出的每個陳述式,以判斷您是否具有足夠的權限來執行它。例如,如果您嘗試從資料庫中的資料表選取列,或從資料庫中刪除資料表,伺服器會驗證您是否具有該資料表的 SELECT 權限或該資料庫的 DROP 權限。

有關每個階段發生情況的更詳細描述,請參閱 第 8.2.6 節,「存取控制,階段 1:連線驗證」,以及 第 8.2.7 節,「存取控制,階段 2:請求驗證」。若要取得診斷權限相關問題的協助,請參閱 第 8.2.22 節,「疑難排解連線到 MySQL 的問題」

如果您在連線時(無論是自己或其他人)變更了您的權限,這些變更不一定會立即對您發出的下一個陳述式生效。有關伺服器重新載入授權表格之條件的詳細資訊,請參閱 第 8.2.13 節,「權限變更生效的時間」

有些事情您無法使用 MySQL 權限系統來完成

  • 您無法明確指定應拒絕給定使用者存取。也就是說,您無法明確比對使用者然後拒絕連線。

  • 您無法指定使用者擁有在資料庫中建立或刪除資料表的權限,但沒有建立或刪除資料庫本身的權限。

  • 密碼會全域適用於帳戶。您無法將密碼與特定物件(例如資料庫、資料表或常式)關聯。