2014-02-06 97 views
3

我想创建一个有权创建和删除其他用户的MySQL用户,但是会阻止我自己的(超级用户)帐户被删除或修改。如何保护MySQL用户不被删除和修改?

用户似乎需要CREATE USER才能够管理用户,这似乎允许删除所有帐户。

目标是提供MySQL作为一种服务,可以做一些用户管理,同时保持管理用户不受用户的限制。

编辑:用户将使用CLI mysql客户端或第三方数据库工具直接连接到MySQL。当然这个问题可以通过为用户提供一个自定义系统来完成用户管理并在那里进行自定义访问控制来消除,但我更愿意直接访问数据库。

+0

在你的场景中,MySQL是直接访问还是通过某种网站/ API访问? –

+0

如果您在服务器和应用程序之间使用任何层(例如jdbc驱动程序),则可以截获查询并阻止任何删除用户的尝试。但是由于您允许用户通过mysql客户端连接,我认为您可以做的最好的做法是定期检查您的用户是否被删除并自动重新创建。但我仍然认为,如果向最终用户授予此权限是一个好主意(可能不是这样),您应该三思。 – Leo

+0

@Leo:我不介意在每次需要时重新创建用户,如果这不意味着取消DB,并且每次使用--skip-grant-tables临时重新启动它。 – Maarten

回答

0

MySQL不提供这种级别的用户管理控制。但我可以想象一下你自己的一个小应用程序,它可以让你的授权用户只管理你允许的用户。

只有应用程序将作为特权用户连接到数据库。 只有应用程序才会发布实际的CREATE USERDROP USER语句,并且仅限于您允许的帐户。

通过这个应用程序操作了这些实际的MySQL系统用户后,这些帐户就可以直接连接了。

相关问题