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

Jas*_*ome 5 mysql amazon-rds

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

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

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

这可以实现吗?

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

小智 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 想要创建名为 mysql 的数据库,bbb_example则会出现权限被拒绝错误。
  2. 他仅对他创建的数据库拥有权限,但对他创建的用户创建的数据库拥有权限(如果他授予该权限)。
  3. 然而,他可能会管理他拥有的那些数据库中的权限。

考虑到这一点,您可以调整它`<user>_%`以最适合您的需求。