4

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

我试过了

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

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

4

3 回答 3

3

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

于 2011-09-14T10:14:03.527 回答
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 等,您也不想授予权限。)

也可以看看:

于 2018-02-28T18:58:52.530 回答
0

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

于 2011-09-14T10:15:59.257 回答