2014-11-03 73 views
1

我在许多来源,包括MySQL文档中发现,这样的说法似乎采取here为什么在MySQL中引用了用户名和主机名?

SHOW GRANTS for 'monty'@'localhost'; 

例。 请注意,montylocalhost都被引用。我尝试了一个没有引号的版本

SHOW GRANTS for [email protected]; 

在MySQL控制台中,我得到了完全相同的结果。

任何人都可以解释为什么这两个单词在文档和教程中引用的原因吗?

回答

2

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

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

如果您的用户名包含非字母数字字符,如点,空格或引号,那么MySQL会,除非它是用引号括起来,并用正确转义抛出一个错误必要时进行反斜杠。

+0

谢谢!所以引号就像bash中的那些一样工作,例如?如果所有字符都是字母数字,那么省略硬编码用户名和主机名的所有引号是安全的吗? – 2014-11-03 09:04:23

+0

@FrozenFlame是的,这是完全正确的。 – 2014-11-03 09:05:39

相关问题