我正在尝试一次设置两个数据库的权限。我知道可以在两个语句中分配它们。有没有办法一个一个?
我试过了
GRANT ALL PRIVILEGES
ON mydb1.*, mydb2.*
TO 'reader'@'localhost'
IDENTIFIED BY 'mypassword';
但它似乎只适用于一个数据库。
不,你不能,你可以在GRANT syntax diagram看到。虽然显然,您可以使用通配符*.*
将授权应用于所有数据库,但我不会这样做。
您可以向所有数据库授予权限(使用*.*
),也可以一次授予一个,但不能一次授予2个权限。
从GRANT文档(https://dev.mysql.com/doc/refman/5.7/en/grant.html):
在
_
语句中指定数据库名称时,允许使用%
和GRANT
通配符,这些语句在数据库级别授予权限。这意味着,例如,如果要将_
字符用作数据库名称的一部分,则应在\_
语句中将其指定为GRANT
,以防止用户能够访问与通配符模式匹配的其他数据库;例如,GRANT ......在`foo\_bar\`.* TO ....
所以,为了做到上述(mydb1和mydb2),就这样做
GRANT ALL PRIVILEGES ON `mydb%`.* TO 'reader'@'localhost';
等等(假设您没有mydb3或mydb_funkytown等,您也不想授予权限。)
也可以看看: