Mysql
如何在 MySQL 的單個查詢中向使用者授予對多個數據庫/表的權限?
我正在嘗試查詢 -
GRANT SELECT ON company.*, school.*, onlineshop.* TO user1@localhost;
我收到語法錯誤。
我可以使用 - 一個一個地授予權限 -
GRANT SELECT ON company.* TO user1@localhost; GRANT SELECT ON school.* TO user1@localhost; GRANT SELECT ON onlineshop.* TO user1@localhost;
那麼有沒有辦法在一個查詢中授予所有三個權限?
MySQL 8.0
您將使用
CREATE ROLE
. 接下來,您將執行GRANT SELECT ON db.*
到您需要的所有數據庫的角色。(您只需執行一次。)然後,您將角色授予使用者。
有關此範例,請參閱MySQL 文件。
MySQL 5.7 及之前版本
您可以為每個數據庫創建一個授權,就像您在問題中所做的那樣。或者原則上可以使用兩個 SQL 命令(參見Bill Karwin 的評論)。
您可以不使用 GRANT 語句直接作業系統表,但如果這樣做,則必須使用 FLUSH PRIVILEGES 使更改生效。
INSERT INTO mysql.db (user, host, db, select_priv) VALUES ('user1', 'localhost', 'company', 'Y'), ('user1', 'localhost', 'school', 'Y'), ('user1', 'localhost', 'onlineshop', 'Y') ON DUPLICATE KEY SET select_priv = 'Y'; FLUSH PRIVILEGES;
如果該表中已經存在行,我將展示 ON DUPLICATE KEY 的用法。
從技術上講,這不是一條 SQL 語句,因為您需要使用 FLUSH PRIVILEGES。