创建MySQL数据库、用户和授予权限所需的最低权限是什么?

5
使用MySQL 5.6或5.7,托管在AWS RDS中,或使用Docker MySQL容器,我想创建一个最低权限的用户,例如名为creator,该用户可以执行以下操作:
  • 创建新数据库。
  • 创建新用户。
  • 授予新用户对新数据库中所有表的SELECT和INSERT权限。

我希望creator用户无法访问其没有创建的现有数据库。

这可行吗?

到目前为止,我的研究表明,这样的creator用户可能需要在整个MySQL实例上具有全局SELECT和INSERT权限,但这似乎过于冗余。

1个回答

3
您可以通过存储过程和一种比存储过程更简单的解决方法来实现此操作,这可能是您正在寻找的:
``` GRANT CREATE USER ON *.* TO ''@''; GRANT ALL PRIVILEGES ON `_%`.* TO ''@'' WITH GRANT OPTION; ```
正如您在此答案中所看到的那样,您需要注意以下几点:
  1. 用户只能创建以他的用户名 + '_' 开头的数据库(使用给定链接示例,如果您的用户名是 aaa,则可以创建名为 aaa_example 的数据库,如果 aaa 想要创建名为 bbb_example 的数据库,则 MySQL 将显示权限被拒绝的错误。
  2. 他只有对他创建的那些数据库拥有特权,但是对于由他创建的用户创建的数据库(如果他授予了该权限),他将具有特权。
  3. 然而,他可能会管理自己拥有的那些数据库的特权。
考虑到这一点,您可以将 `_%` 调整为最符合您需求的内容。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接