Mysql
向不在 AWS 上工作的使用者授予數據庫權限
我無法在 AWS 上授予使用者權限。
mysql> GRANT CREATE ON *.* TO 'hmrex_db'@'%'; Query OK, 0 rows affected (0.01 sec) mysql> SHOW GRANTS FOR 'hmrex_db'@'%'; +------------------------------------------------------------------------------+ | Grants for hmrex_db@% | +------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'hmrex_db'@'%' IDENTIFIED BY PASSWORD <secret> | | GRANT SELECT, INSERT, UPDATE, DELETE, DROP ON `hmrex_db`.* TO 'hmrex_db'@'%' | +------------------------------------------------------------------------------+ 2 rows in set (0.00 sec)
- 我登錄的使用者有
GRANT ..., CREATE, ... ON *.* TO 'username'@'%' IDENTIFIED BY PASSWORD <secret> WITH GRANT OPTION
read_only
是0
。我無法弄清楚為什麼這不起作用。
我發現我打錯了,並且正在為不存在的使用者設置權限,但是,這有效。當我修正錯字時,它仍然沒有工作。
要反映使用者/權限更改,您需要執行以下命令:
FLUSH PRIVILEGES;
然後你可以再次嘗試 SHOW GRANTS。
答案是拼寫錯誤和由於疲倦而誤讀輸出的組合。
mysql> GRANT CREATE ON *.* TO 'hmrex_db'@'%'; Query OK, 0 rows affected (0.01 sec) mysql> SHOW GRANTS FOR 'hmrex_db'@'%'; +------------------------------------------------------------------------------+ | Grants for hmrex_db@% | +------------------------------------------------------------------------------+ | GRANT CREATE ON *.* TO 'hmrex_db'@'%' IDENTIFIED BY PASSWORD <secret> | | GRANT SELECT, INSERT, UPDATE, DELETE, DROP ON `hmrex_db`.* TO 'hmrex_db'@'%' | +------------------------------------------------------------------------------+ 2 rows in set (0.00 sec)
您會注意到授權集仍然是
SELECT, INSERT, UPDATE, DELETE, DROP
,與以前相同。但是,您可能沒有註意到,而我沒有註意到的是,它USAGE
已更改為CREATE
.因此,一旦錯字被修正,該命令就正確設置了權限,而不是我期望看到的地方!之間有區別
GRANT CREATE ON *.* TO 'hmrex_db'@'%';
和
GRANT CREATE ON
hmrex_db.* TO 'hmrex_db'@'%';
您可以在上面第一行的正確輸出中看到,而不是在我正在查看的第二行中。
當我將命令更改為 時
GRANT CREATE ON
hmrex_db.* TO 'hmrex_db'@'%';
,我得到以下輸出:mysql> GRANT CREATE ON `hmrex_db`.* TO 'hmrex_db'@'%'; Query OK, 0 rows affected (0.01 sec) mysql> SHOW GRANTS FOR 'hmrex_db'@'%'; +--------------------------------------------------------------------------------------+ | Grants for hmrex_db@% | +--------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'hmrex_db'@'%' IDENTIFIED BY PASSWORD <secret> | | GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON `hmrex_db`.* TO 'hmrex_db'@'%' | +--------------------------------------------------------------------------------------+ 2 rows in set (0.00 sec)