mysql - 用户可以在没有 ALL PRIVILEGES 的情况下获得 GRANT PERMISSION 吗?
问题描述
我想创建一个可以注册其他新用户的用户,但我不希望他拥有ALL PRIVILEGES
,看起来我在这里做错了什么。
我试过以下
GRANT SELECT, INSERT, UPDATE ON database.* TO 'USER' IDENTIFIED BY '123456' WITH GRANT OPTION
但是,当我使用此 USER 帐户登录并尝试将权限授予另一个用户 MySQL/MariaDB 时,返回:You are not allowed to create a user with GRANT
是否可以让一个只能在单个数据库上选择/插入/更新的用户将这些相同的权限授予新用户?
解决方案
简短的回答:是的。不仅适用于新帐户,还适用于任何存在的帐户。
根据MySQL 的文档:
可选的 WITH 子句用于使用户能够向其他用户授予权限。WITH GRANT OPTION 子句使用户能够将其在指定特权级别上的任何特权授予其他用户。
[...]
请注意,当您在特定权限级别授予用户 GRANT OPTION 权限时,该用户在该级别拥有(或将来可能授予)的任何权限也可以由该用户授予其他用户。
因此,正如文档所述,具有 、 和 特权的帐户SELECT
可以INSERT
向UPDATE
其他GRANT
帐户提供相同的权限。
但是,文档中有一些重要的细节需要注意:
- 请注意您授予谁
GRANT OPTION
特权,因为具有不同特权的两个用户可能能够组合特权! - 假设您授予用户
INSERT
对数据库的权限。如果您随后授予SELECT
数据库权限并指定WITH GRANT OPTION
,则该用户不仅可以授予其他用户SELECT
权限,还可以授予INSERT
. 如果您随后授予UPDATE
用户对数据库的权限,则用户可以授予INSERT
、SELECT
和UPDATE
。
如果您要允许其他帐户管理权限,例如初级 DBA 或 HR 成员,请考虑查看您的数据库权限审核过程,以确保识别和纠正意外授予。
推荐阅读
- jquery - 未捕获的类型错误:无法在家中读取 null 的属性“on”
- php - 尝试将 laravel 5.1 更新到 5.2 导致错误要求无法解决
- python - seaborn:调整图例周围框的透明度
- broadcastreceiver - 应用程序被杀死时没有触发警报
- jsf - weblogic上的PF战争文件部署
- html - CSS:居中对齐文本,同时将容器的其他元素保持在左侧
- ios - 我正在尝试 JSON 解码(Swift)
- facebook - 如何查找填写 Facebook Leads 广告表单的人员
- .net - t-sql 'at time zone' 不知道 .net 知道的所有时区
- java - SpringBoot:使用自定义序列化器 + 反序列化器消费和生成 XML