文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 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.13 權限變更生效時機

如果啟動 mysqld 伺服器時沒有使用 --skip-grant-tables 選項,它會在啟動順序期間將所有權限表內容讀取到記憶體中。此時,記憶體中的資料表會生效以進行存取控制。

如果您使用帳戶管理陳述式間接修改權限表,伺服器會注意到這些變更並立即再次將權限表載入記憶體中。帳戶管理陳述式會在第 15.7.1 節 「帳戶管理陳述式」中說明。範例包括 GRANTREVOKESET PASSWORDRENAME USER

如果您使用 INSERTUPDATEDELETE (不建議) 等陳述式直接修改權限表,除非您告知伺服器重新載入資料表或重新啟動伺服器,否則這些變更不會對權限檢查產生影響。因此,如果您直接變更權限表但忘記重新載入它們,則這些變更在您重新啟動伺服器之前 不會產生影響。這可能會讓您想知道為什麼您的變更似乎沒有任何作用!

若要告知伺服器重新載入權限表,請執行刷新權限作業。這可以透過發出 FLUSH PRIVILEGES 陳述式或執行 mysqladmin flush-privilegesmysqladmin reload 命令來完成。

權限表重新載入會如下影響每個現有用戶端工作階段的權限

  • 資料表和資料行權限變更會在用戶端的下一個請求時生效。

  • 資料庫權限變更會在用戶端下次執行 USE db_name 陳述式時生效。

    注意

    用戶端應用程式可能會快取資料庫名稱;因此,如果沒有實際變更為不同的資料庫,可能看不到此影響。

  • 連線用戶端的靜態全域權限和密碼不受影響。這些變更僅在後續連線的階段作業中生效。動態全域權限的變更會立即生效。如需靜態和動態權限之間差異的資訊,請參閱靜態與動態權限。)

階段作業中作用角色集的變更會立即生效,僅限於該階段作業。 SET ROLE 陳述式會執行階段作業角色啟用和停用 (請參閱第 15.7.1.11 節,「SET ROLE 陳述式」)。

如果伺服器以 --skip-grant-tables 選項啟動,則不會讀取授權表或實作任何存取控制。任何使用者都可以連線並執行任何操作,這是非常不安全的。 若要讓如此啟動的伺服器讀取表格並啟用存取檢查,請清除權限。