Mysql

向不在 AWS 上工作的使用者授予數據庫權限

  • March 18, 2022

我無法在 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_only0

我無法弄清楚為什麼這不起作用。

我發現我打錯了,並且正在為不存在的使用者設置權限,但是,這有效。當我修正錯字時,它仍然沒有工作。

要反映使用者/權限更改,您需要執行以下命令:

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)

引用自:https://dba.stackexchange.com/questions/247026