2017-01-19 40 views
1

我需要單線程來配置我的數據庫中的用戶。我正在運行MySQL 5.6。這裏是我將密碼設置爲一個變量,以便我可以動態傳遞它(顯然它並不總是'密碼')。MySQL通過命令行變量設置密碼

mysql_password="password" 
mysql -u ted -e "SET PASSWORD FOR 'ted'@'localhost' = PASSWORD($mysql_password);" 

我收到以下錯誤,當我運行此:

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'password)' at line 1 

什麼是錯的聲明?它可以糾正或是另一種解決方案,所以我通過Bash完成了這項工作?

+2

這是'SET PASSWORD'語句中的字符串,因此需要用單引號括起來,當你經過它,就像' '泰德'是。但要小心,這不是注射安全的。 –

+0

另請參閱http://stackoverflow.com/questions/4383135/escaping-mysql-command-lines-via-bash-scripting –

+0

但單引號不會在bash中詮釋變量。 –

回答

1

你需要用單引號包圍變量:

mysql -u root -e "SET PASSWORD FOR 'ted'@'localhost' = PASSWORD('$mysql_password');"