Fu8*_*u86 69 mysql permissions database-administration
我对用户/数据库有以下授权
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' |
+---------------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
要启用对数据库的外部访问,我需要将 localhost 更改为%
. 一种方法是REVOKE
所有权限并重新设置。问题是,有一个我不知道的密码集,所以如果我撤销该权限,我就无法将其设置回来。
有没有办法在不撤销权限本身的情况下将主机名更改localhost
为%
(并再次返回)?
nic*_*rim 101
如果您可以访问mysql
数据库,则可以直接更改授权表:
UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='username';
Run Code Online (Sandbox Code Playgroud)
...以及一个类似的UPDATE
-statement 将其改回。
此外,您可能还需要对mysql.db
表进行更改:
UPDATE mysql.db SET Host='%' WHERE Host='localhost' AND User='username';
Run Code Online (Sandbox Code Playgroud)
然后刷新以应用特权:
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)
Cra*_*bit 25
MySQL 8+ / MariaDB 10+ 上的最佳选择是:
RENAME USER 'username'@'oldhost' TO 'username'@'newhost';
Run Code Online (Sandbox Code Playgroud)
请参阅https://dev.mysql.com/doc/refman/8.0/en/rename-user.html
Ant*_*zzi 12
Stackoverflow上的最佳答案建议使用RENAME USER
哪个副本用户权限。
使用数据控制语言(如 GRANT、REVOKE、RENAME 等语句)不需要FLUSH PRIVILEGES;
并且在像 Galera 或 Group Replication 的 MySQL 版本中的架构中是必需的,mysql
因为 MyISAM 表没有被复制。
归档时间: |
|
查看次数: |
167641 次 |
最近记录: |