Pet*_*ter 3 mysql data-migration user-permissions
我有一个MySQL用户帐户(仅)用作部署过程的一部分来更改数据库(添加/删除表和列等).由于此用户帐户具有这些高权限,因此我希望在大多数时间禁用它,并且仅在我们实际执行涉及数据库更改的部署时才启用它.最好的方法是什么?几个存储过程(proc_enable,proc_disable或类似的东西)中的某些东西会非常好,但我似乎无法找到任何最佳实践,MySQL似乎没有一个简单的启用/禁用切换.
对于 MySQL 5.7.6 及更高版本(以及 MariaDB 10.4.2 及更高版本),可以使用以下命令锁定和解锁用户帐户:
ALTER USER 'user_name'@'host' ACCOUNT LOCK;
ALTER USER 'user_name'@'host' ACCOUNT UNLOCK;
Run Code Online (Sandbox Code Playgroud)
当帐户被锁定时,尝试登录将导致以下消息:
Access denied for user 'user_name'@'host'.
Account is locked.
Run Code Online (Sandbox Code Playgroud)
资料来源:
在尝试了各种方法之后,我将用户的主机字段设置为无意义的内容,然后返回到有效值以在需要时重新启用帐户.此方法可以通过管理工具或具有适当权限的帐户的mysql命令提示符轻松完成,并且不需要保存密码哈希以便以后还原.