暂时启用和禁用MySQL用户帐户的最佳做法?

时间:2014-04-24 19:46:48

标签: mysql data-migration user-permissions

我有一个MySQL用户帐户(仅作为部署过程的一部分)用于更改数据库(添加/删除表和列等)。由于此用户帐户具有这些高权限,因此我希望在大多数时间禁用它,并且仅在我们实际执行涉及数据库更改的部署时才启用它。最好的方法是什么?几个存储过程(proc_enable,proc_disable或类似的东西)中的某些东西会非常好,但我似乎无法找到任何最佳实践,MySQL似乎没有一个简单的启用/禁用切换。

3 个答案:

答案 0 :(得分:5)

在尝试各种方法之后,我将用户的主机字段设置为无意义的内容,然后返回到有效值以在需要时重新启用帐户。此方法可以通过管理工具或具有适当权限的帐户的mysql命令提示符轻松完成,并且不需要保存密码哈希以便以后恢复。

答案 1 :(得分:2)

对于MySQL 5.7.6及更高版本,可以使用以下命令锁定和解锁用户帐户:

ALTER USER 'user_name'@'host' ACCOUNT LOCK;
ALTER USER 'user_name'@'host' ACCOUNT UNLOCK;

帐户被锁定后,尝试登录将显示以下消息:

Access denied for user 'user_name'@'host'.
Account is locked.

来源:https://dev.mysql.com/doc/refman/5.7/en/account-locking.html

答案 2 :(得分:1)

将用户的密码哈希值(在mysql.user.Password中)设置为无效的虚拟值(例如"!")以禁用该帐户,并将其设置回原始值以重新启用它