使用“*”快速向特定的MySQL数据库表授予权限?

4
有没有可能做到这样的事情?
GRANT SELECT , INSERT , UPDATE , DELETE ON  `database`.`prefix_*` TO  'user'@'localhost';

这使我能够快速为所有以"prefix_"开头的表设置权限。


是的,但使用“%”作为通配符,而不是“*”,并且对“_”进行反斜杠转义,因为它本身也是一个通配符。prefix\_% - Michael Berkowski
当我使用反斜杠转义命令时,会出现以下错误:#1103-表名不正确'prefix\\_%' - Taapo
当前是否存在任何以 prefix_ 为前缀的表? - Michael Berkowski
似乎在_tablenames_上是全有或全无的情况--请参见https://dev59.com/yknSa4cB1Zd3GeqPO43I#1489577 - Taapo
对于常规的MySQL似乎是这样的 :/ - Michael Berkowski
显示剩余3条评论
1个回答

3
您可以使用%来替代*
GRANT SELECT , INSERT , UPDATE , DELETE ON  `database`.`prefix\_%` TO  'user'@'localhost';

根据文档
在授予全局或数据库级别权限的GRANT语句中,可以使用“_”和“%”通配符来指定数据库名称。这意味着,例如,如果您想在数据库名称中使用“_”字符,则应在GRANT语句中将其指定为“_”,以防止用户能够访问与通配符模式匹配的其他数据库。

根据文档所述,您只能在数据库名称中使用“%”,而不能在表名中使用。 - Harry B

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