首页 > 解决方案 > 防止 MySQL 用户创建/删除数据库

问题描述

我们正在开发一个 UI 面板,用于管理 MySQL 用户和数据库的创建/更改/删除。为了防止不同步的情况,我们希望为 MySQL 用户禁用 MySQL 数据库的创建/删除。

我们的“全球”用户——可以访问以其用户名开头的所有数据库——目前具有创建和删除数据库的能力。这是全局用户权限的样子(这不是管理员/根用户):

GRANT USAGE ON *.* TO `testtt`@`%`
GRANT ALL PRIVILEGES ON `testtt\_%`.* TO `testtt`@`%`

我知道可以在 PHPMyAdmin 中禁用数据库的创建,但我更有信心在特定用户的 PRIVILEGES 中配置它。我很难找出我们需要撤销或更改哪个 PRIVILEGE 以防止用户能够创建/删除数据库。

希望您能帮助我们!

标签: mysql

解决方案


您可以使用部分撤销的权限限制。

partial_revokes 系统变量控制是否可以对帐户设置权限限制。要允许 REVOKE 操作,请启用 partial_revokes:

SET PERSIST partial_revokes = ON;

mysql> REVOKE UPDATE ON mysql.* FROM u1;
mysql> REVOKE DELETE ON world.* FROM u1;

从 MySQL 8.0.16 开始,如果启用了 partial_revokes 系统变量,这是可能的。具体来说,对于在全局级别具有权限的用户。

为了更好地理解它,请参阅文档:- MYSQL DB 中的部分撤销


推荐阅读