Lachlan
发布于 2025-09-19 / 22 阅读
0

一次MySQL已有用户登陆ip管控记录

版本: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自己都更新好了。