首頁 >資料庫 >mysql教程 >如何授予MySQL資料庫除單一表之外的所有權限?

如何授予MySQL資料庫除單一表之外的所有權限?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-03 19:50:03869瀏覽

How to Grant All Privileges to a MySQL Database Except for a Single Table?

如何授予MySQL資料庫除單表之外的所有權限

問題:

使用者尋求允許使用者完全存取除特定表之外的資料庫的解決方案,在該表中他們應該僅具有SELECT 權限。

答案:

儘管嘗試授予資料庫的所有權限然後專門授予所需表的 SELECT 權限,或者撤銷插入、更新和刪除權限,錯誤仍然存在。

解決方案:

動態授予語句產生:

為了簡化流程,您可以使用下列SELECT CONCAT 查詢來產生必要的GRANT 語句:

<code class="sql">SELECT CONCAT("GRANT UPDATE ON db.", table_name, " TO user@localhost;")
FROM information_schema.TABLES
WHERE table_schema = "YourDB" AND table_name <> "table_to_skip";</code>

步驟:

  1. 撤銷使用者對資料庫的所有權限:

    <code class="sql">REVOKE ALL PRIVILEGES ON db.* FROM user@localhost;  </code>
  2. 撤銷使用者對資料庫的所有權限:
貼上產生的語句進入您的 MySQL 用戶端並執行它們。

範例:
REVOKE ALL PRIVILEGES ON my_db.* FROM my_user@localhost;  

SELECT CONCAT("GRANT UPDATE ON my_db.", table_name, " TO my_user@localhost;")
FROM information_schema.TABLES
WHERE table_schema = "my_db" AND table_name <> "special_table";

以上是如何授予MySQL資料庫除單一表之外的所有權限?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn