Mysql

更改 MySQL 使用者的主機權限

  • September 1, 2021

我對使用者/數據庫有以下授權

mysql> SHOW GRANTS FOR 'username'@'localhost';
+---------------------------------------------------------------------------+
| Grants for username@localhost                                             |
+---------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'username'@'localhost' IDENTIFIED BY PASSWORD 'xxx' |
| GRANT ALL PRIVILEGES ON `userdb`.* TO 'username'@'localhost'              |
+---------------------------------------------------------------------------+

要啟用對數據庫的外部訪問,我需要將 localhost 更改為%. 一種方法是REVOKE所有權限並重新設置。問題是,有一個我不知道的密碼設置,所以如果我撤銷權限,我無法將其設置回來。

有沒有辦法在不撤銷權限本身的情況下將主機名更改localhost為(然後再返回)?%

如果您有權訪問mysql數據庫,則可以直接更改授權表:

UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='username';

…和一個類似的UPDATE-statement 將其更改回來。

此外,您可能還需要對mysql.db錶格進行更改:

UPDATE mysql.db SET Host='%' WHERE Host='localhost' AND User='username';

然後刷新以應用權限:

FLUSH PRIVILEGES;

Stackoverflow上的最佳答案建議使用RENAME USERwhich copy 使用者權限。

使用數據控制語言(如 GRANT、REVOKE、RENAME 等語句)不需要FLUSH PRIVILEGES;並且在 MySQL 版本中的 Galera 或 Group Replication 等架構中需要,mysql因為 MyISAM 表不會被複製,所以在數據庫中有 MyISAM 表。

引用自:https://serverfault.com/questions/483339