创建MySQL数据库,用户和授予权限所需的最低权限是多少?

时间:2017-02-10 01:08:07

标签: mysql amazon-rds

使用AWS RDS中托管的MySQL 5.6或5.7或Docker MySQL container,我想创建一个权限最小的用户,例如名为creator,可以执行以下操作:

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

如果creator用户无权访问不负责创建的现有数据库,我更愿意。

这可以实现吗?

到目前为止,我的研究表明,这样的creator用户可能需要跨MySQL实例的全局SELECT和INSERT权限,但这似乎过多。

1 个答案:

答案 0 :(得分:2)

您可以使用存储过程和解决方法执行此操作,它比SP更简单,可能是您正在寻找的: GRANT CREATE USER ON *.* TO '<user>'@'<host'; GRANT ALL PRIVILEGES ON `<user>_%`.* TO '<user>'@'<host>' WITH GRANT OPTION; 正如您在this answer中所看到的,您需要注意以下几点:

  1. 用户只能创建以用户名+'_'开头的数据库(如果您的用户名为aaa,则使用给定的链接示例,您可以创建名称为aaa_example的数据库,如果aaa想要的话创建名为bbb_example的数据库mysql将删除权限被拒绝错误。
  2. 他只对他创建的数据库拥有权限,但是由他创建的用户创建的数据库(如果他授予该权限)。
  3. 但他可能会管理他所拥有的数据库中的特权。
  4. 考虑到这一点,您可以根据自己的需要调整此`<user>_%`