授予具有相同前缀的一组数据集所有特权

时间:2019-02-21 16:43:03

标签: mysql

我有一组名称为abc_base_1,abc_base_2,abc_base_3 abc_base_n的数据集。

我想将所有这些数据库的所有表的所有特权授予一个非root用户。

通常,abc_似乎是组的通用前缀。

问题:

  1. mysql是否具有数据库组?如果是,如何定义它们(有些特殊的东西,或者只是必须具有相同的名称前缀(如abc))?

  2. 是否可以授予数据库组特权(或名称以abc前缀开头的数据库)?如果是,如何授予?

  3. 此权限是为所有具有相同名称前缀的新数据库动态分配的,还是在创建新数据库时一直授予权限。

2 个答案:

答案 0 :(得分:3)

是的。您可以授予由LIKE通配符标识的一组MySQL数据库的权限:

mysql> GRANT ALL ON `abc\_%`.* TO username@localhost;

在用户尝试访问数据库时会检查权限-创建数据库时,您无需重复此GRANT语句。

答案 1 :(得分:0)

我找到了solution

应该按以下方式授予特权:

GRANT ALL PRIVILEGES ON `abc\_%` .  * TO 'someuser'@'localhost';

此表达式具有以下权利:

  • 访问以abc_开头的所有数据库
  • 创建以abc_开头的新数据库
  • abc_开头但由其他用户创建的对新数据库的访问。