2015-01-09 25 views
-1

MySQL的告訴我,我使用我的Ubuntu這個語句時外殼SQL語法錯誤的mysql -e --execute

mysql -uroot -proot -e "GRANT ALL ON `mydb`.* to 'myuser'@'%' identified by 'mypwd';" 

我也試過這個語法有一個SQL語法錯誤:

mysql -uroot -proot -e "GRANT ALL ON `mydb`.* to '[email protected]%' identified by 'mypwd';" 

afaik我沒有有趣的隱藏字符在那裏,當我執行mysql客戶端內的語句,它工作正常。有什麼我失蹤?

例如錯誤信息

位於第1行

ERROR 1064(42000):你在你的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第一行使用'*''myuser''''''由'mypwd''標識的正確語法。

回答

0

我發現了問題。用於轉義數據庫名稱的字符負責語法錯誤。沒有他們的這種說法很好地工作

mysql -uroot -proot -e "GRANT ALL ON mydb.* to '[email protected]%' identified by 'mypwd';" 

我對shell命令知之甚少,但我猜「`」字符確實有趣。也許有更多經驗的人關心解釋( - :以及如何逃脫它以防止這種錯誤