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

问题描述 投票:0回答:1

使用 AWS RDS 中托管的 MySQL 5.6 或 5.7,或 Docker MySQL 容器,我想创建一个权限最低的用户,例如名为

creator
,可以执行以下操作:

  • 创建一个新数据库。
  • 创建一个新用户。
  • 授予新用户对新数据库中所有表的 SELECT 和 INSERT 权限。

我希望

creator
用户无权访问其不负责创建的现有数据库。

这可以实现吗?

到目前为止,我的研究表明,这样的

creator
用户可能需要跨 MySQL 实例的全局 SELECT 和 INSERT 权限,但这似乎过多。

mysql amazon-rds
1个回答
3
投票

您可以使用存储过程和解决方法来完成此操作,它比 SP 更简单,并且可能正是您正在寻找的:

  GRANT CREATE USER ON *.* TO '<user>'@'<host>';
  GRANT ALL PRIVILEGES ON `<user>_%`.* TO '<user>'@'<host>' WITH GRANT OPTION;

正如您在这个答案中看到的,您需要注意几点:

  1. 用户只能创建以他的用户名+'_'开头的数据库(使用给定的链接示例,如果您的用户名是
    aaa
    ,您可以创建名称为
    aaa_example
    的数据库,如果aaa想要创建名为
    的数据库) bbb_example
    mysql 将抛出权限被拒绝错误。
  2. 他仅对他创建的数据库拥有权限,但对他创建的用户创建的数据库拥有权限(如果他授予该权限)。
  3. 但是他可能会管理他拥有的那些数据库中的权限。

考虑到这一点,您可以调整此

`<user>_%`
以最适合您的需求。

© www.soinside.com 2019 - 2024. All rights reserved.