mysql - 防止 MySQL 用户创建/删除数据库
问题描述
我们正在开发一个 UI 面板,用于管理 MySQL 用户和数据库的创建/更改/删除。为了防止不同步的情况,我们希望为 MySQL 用户禁用 MySQL 数据库的创建/删除。
我们的“全球”用户——可以访问以其用户名开头的所有数据库——目前具有创建和删除数据库的能力。这是全局用户权限的样子(这不是管理员/根用户):
GRANT USAGE ON *.* TO `testtt`@`%`
GRANT ALL PRIVILEGES ON `testtt\_%`.* TO `testtt`@`%`
我知道可以在 PHPMyAdmin 中禁用数据库的创建,但我更有信心在特定用户的 PRIVILEGES 中配置它。我很难找出我们需要撤销或更改哪个 PRIVILEGE 以防止用户能够创建/删除数据库。
希望您能帮助我们!
解决方案
您可以使用部分撤销的权限限制。
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 中的部分撤销
推荐阅读
- c++ - cURL 保持打印传输到控制台?
- android - 如何在 Android 中使用 SetGroup() 在组中显示通知?
- asterisk - Voximal:无法连接到使用自定义 ASR 插件编译的 UniMRCP
- c# - Combobox IsEditable 破坏了我的数据绑定
- java - 需要获取 java 堆大小 java 6 的信息
- java - 没有默认构造函数的类
- mysql - SUM 函数添加两次记录
- linux - 如何在 linux 中使用 join 合并长度不等的空格分隔文件(内连接)?
- android - 为什么UnrealEngine在调用android.bat时会崩溃?
- ios - iOS 12 及更低版本上的 SwiftUI