为什么MySQL中引用了用户名和主机名?

时间:2014-11-03 08:42:23

标签: mysql

我在包括MySQL文档在内的许多来源中找到了这样的声明

SHOW GRANTS for 'monty'@'localhost';

采取的示例here。 请注意,引用了montylocalhost。我尝试了一个不带引号的版本

SHOW GRANTS for monty@localhost;
在MySQL控制台中

,我得到了完全相同的结果。

有人能解释为什么在文档和教程中引用这两个词的原因?

1 个答案:

答案 0 :(得分:2)

这是因为MySQL用户名几乎可以包含任何字符,包括引号和空格。例如,这是完全合法的语法:

mysql> grant all on test.* to ' \\"\'@*.'@'localhost';
Query OK, 0 rows affected (0.00 sec)

如果您的用户名包含非字母数字字符(如点,空格或引号),则MySQL将抛出错误,除非将其括在引号中并在必要时使用反斜杠正确转义。