多个数据库的MySQL授权

4

我正在尝试同时设置两个数据库的权限。我知道可以在两个语句中分别指定它们的权限。有没有办法在一个语句中完成呢?

我尝试过:

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

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

3个回答

3

根据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之类的数据库,您也不想授予权限。)

另请参阅:


3
不可以,正如你在GRANT语法图中看到的。虽然显然可以使用通配符*.*将授权应用于所有数据库,但我不建议这样做。

1
那不正确。确实您不能同时列出多个数据库,但是您可以使用通配符一次性对多个数据库授予权限。请参见我的答案--https://dev59.com/DVvUa4cB1Zd3GeqPrkL3#49036705 - Aaron Wallentine

0

您可以授予所有数据库权限(使用*.*)或逐个授予权限,但不能同时授予2个。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接