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