MySQL Grant用于多个数据库

时间:2011-09-14 10:11:27

标签: mysql grant

我正在尝试一次设置两个数据库的权限。我知道可以在两个语句中分配它们。有没有办法在一个地方做到这一点?

我试过

GRANT ALL PRIVILEGES 
       ON mydb1.*, mydb2.*
       TO 'reader'@'localhost'
       IDENTIFIED BY 'mypassword';

但它似乎只适用于一个数据库。

3 个答案:

答案 0 :(得分:3)

不,你不能,正如你在GRANT syntax diagram中看到的那样。虽然显然,您可以使用通配符*.*将授权应用于所有数据库,但我不会这样做。

答案 1 :(得分:0)

您可以向所有数据库授予权限(使用*.*),也可以一次授予一个,但不能一次授予2个。

答案 2 :(得分:0)

来自GRANT文档(https://dev.mysql.com/doc/refman/5.7/en/grant.html):

  

_语句中指定数据库级别授予权限的数据库名称时,允许使用%GRANT通配符。这意味着,例如,如果要将_字符用作数据库名称的一部分,则应在\_语句中将其指定为GRANT,以防止用户能够访问与通配符模式匹配的其他数据库;例如,GRANT ... ON `foo\_bar\`.* TO ....

所以,为了做到上述(mydb1和mydb2),只需做

GRANT ALL PRIVILEGES ON `mydb%`.* TO 'reader'@'localhost';

等。 (假设您没有mydb3或mydb_funkytown等,那么您也不想授予权限。)

另见: