- 8.2.1 帳號使用者名稱與密碼
- 8.2.2 MySQL 提供的權限
- 8.2.3 權限表
- 8.2.4 指定帳號名稱
- 8.2.5 指定角色名稱
- 8.2.6 存取控制,階段 1:連線驗證
- 8.2.7 存取控制,階段 2:請求驗證
- 8.2.8 新增帳號、指派權限和刪除帳號
- 8.2.9 保留帳號
- 8.2.10 使用角色
- 8.2.11 帳號類別
- 8.2.12 使用部分撤銷限制權限
- 8.2.13 權限變更何時生效
- 8.2.14 指派帳號密碼
- 8.2.15 密碼管理
- 8.2.16 伺服器處理過期密碼
- 8.2.17 可插拔驗證
- 8.2.18 多因素驗證
- 8.2.19 Proxy 使用者
- 8.2.20 帳號鎖定
- 8.2.21 設定帳號資源限制
- 8.2.22 疑難排解連線到 MySQL 的問題
- 8.2.23 基於 SQL 的帳號活動稽核
MySQL 可讓您建立帳號,允許用戶端使用者連線到伺服器並存取伺服器管理的資料。MySQL 權限系統的主要功能是驗證從指定主機連線的使用者,並將該使用者與資料庫的權限建立關聯,例如 SELECT
、INSERT
、UPDATE
和 DELETE
。其他功能包括授予管理操作權限的能力。
為了控制哪些使用者可以連線,每個帳戶都可以被指派驗證憑證,例如密碼。MySQL 帳戶的使用者介面包含 SQL 陳述式,例如 CREATE USER
、GRANT
和 REVOKE
。請參閱 第 15.7.1 節「帳戶管理陳述式」。
MySQL 權限系統確保所有使用者只能執行被允許的操作。身為使用者,當您連線到 MySQL 伺服器時,您的身分是由您連線的主機和您指定的使用者名稱所決定。當您在連線後發出請求時,系統會根據您的身分和您想做的事情來授予權限。
MySQL 會同時考量您的主機名稱和使用者名稱來識別您,因為沒有理由假設特定使用者名稱在所有主機上都屬於同一個人。例如,從 office.example.com
連線的使用者 joe
不一定與從 home.example.com
連線的使用者 joe
是同一個人。MySQL 藉由讓您能夠區分不同主機上恰好具有相同名稱的使用者來處理此問題:您可以為從 office.example.com
連線的 joe
授予一組權限,並為從 home.example.com
連線的 joe
授予另一組不同的權限。若要查看給定帳戶具有哪些權限,請使用 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 權限系統執行某些操作
您無法明確指定應拒絕給定使用者存取權限。也就是說,您無法明確比對使用者然後拒絕連線。
您無法指定使用者具有在資料庫中建立或刪除表格的權限,但不能建立或刪除資料庫本身。
密碼會全域套用至帳戶。您無法將密碼與特定物件(例如資料庫、表格或常式)相關聯。