2014-11-03 83 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

相關問題