版本:5.7.24
条件:在有超级用户的条件下,不更改用户其IP以外的项目。
响应需求之初,我想到的是以下处理方案:
#禁用validate_password插件
mysql> SHOW VARIABLES LIKE 'validate_password%';
mysql> UNINSTALL PLUGIN validate_password;
#假设要改的用户是developer,mysql.user中user, host为 "| developer | % |"
mysql> UPDATE mysql.user SET host='10.4.%' WHERE user='developer' AND host='%';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'developer'@'10.4.%';
mysql> FLUSH PRIVILEGES;
#启用validate_password插件
mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.so';
后续发现没有必要卸载validate_password插件并重新GRANT。
mysql> UPDATE mysql.user SET host='10.4.%' WHERE user='developer' AND host='%';
mysql> FLUSH PRIVILEGES;只需要执行这两行就好,刷新权限后查看SHOW GRANTS FOR 'developer'@'10.4.%'; 就会发现GRANT自己都更新好了。