Nic*_*ngs 56 mysql permissions
我有几千个MySQL用户都设置为允许从特定主机访问.问题是,现在我将有两台机器(将来会有更多机器)需要使用相同的帐户来访问每个数据库.
我想快速简单(尽可能自动化)的方式来运行并修改每个用户帐户的主机部分以适应内部网络通配符.例如:
'bugsy'@'internalfoo'可以访问'bugsy'DB.
我想现在允许从内部网络上的任何地方进行bugsy访问
'bugsy'@'10.0.0.%'可以访问'bugsy'DB.
Nic*_*ngs 114
作为参考,解决方案是:
UPDATE mysql.user SET host = '10.0.0.%' WHERE host = 'internalfoo' AND user != 'root';
UPDATE mysql.db SET host = '10.0.0.%' WHERE host = 'internalfoo' AND user != 'root';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)
Ped*_*dro 88
接受的答案仅重命名为用户,但特权被遗忘.
我建议使用:
RENAME USER 'foo'@'1.2.3.4' TO 'foo'@'1.2.3.5';
Run Code Online (Sandbox Code Playgroud)
根据MySQL文档:
RENAME USER使旧用户拥有的权限成为新用户持有的权限.
更一般的答案是
UPDATE mysql.user SET host = {newhost} WHERE user = {youruser}
Run Code Online (Sandbox Code Playgroud)