我正在尝试一次为两个数据库设置权限。我知道可以在两个语句中分配它们。有没有办法做到这一点?
我试过了
GRANT ALL PRIVILEGES
ON mydb1.*, mydb2.*
TO 'reader'@'localhost'
IDENTIFIED BY 'mypassword';
但它似乎只适用于一个数据库。
不,您不能,正如您在GRANT 语法图中看到的那样。虽然显然,您可以使用通配符*.*
将授权应用于所有数据库,但我不会这样做。
从 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 等,您也不想授予权限。)
也可以看看:
您可以向所有数据库(使用*.*
)授予权限,也可以一次授予一个权限,但不能一次授予 2 个权限。