Mysql
更改 MySQL 使用者的主機權限
我對使用者/數據庫有以下授權
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 USER
which copy 使用者權限。使用數據控制語言(如 GRANT、REVOKE、RENAME 等語句)不需要
FLUSH PRIVILEGES;
並且在 MySQL 版本中的 Galera 或 Group Replication 等架構中需要,mysql
因為 MyISAM 表不會被複製,所以在數據庫中有 MyISAM 表。