我使用phpMyAdmin和命令行的混合来维护用户权限。当我使用phpMyAdmin导出一些用户权限时,它生成的sql是
GRANT SELECT, INSERT, UPDATE, DELETE ON `table\_name`.* TO 'user'@'localhost';
我不明白为什么反斜杠被添加到表名中。我在某处读到下划线用作通配符?如果我要运行该sql但删除反斜杠,那么用户权限是否与以前相同?
答案 0 :(得分:2)
不,权限不一样。你是对的,_
用作通配符,它代表一个任意字符,另一个通配符是%
,代表零个或多个字符
(类似的正则表达式模式为.
和.*
)。
应用于权限的这些通配符的工作方式与string comparisions相同,因此如果删除反斜杠,则下划线不再被视为文字,因此授予的权限适用于与模式匹配的所有数据库*。
*注意:虽然它在这里被称为table_name
,但它实际上是指数据库而不是表。