2013-10-13 209 views
0

的Ubuntu的bash的MySQL腳本訪問MySQL的看起來像從Ubuntu的猛砸

mysql -h localhost -u $MYSQLLOGIN -p$MYSQLROOTPASS -t -e ' 
CREATE USER [email protected]'localhost' IDENTIFIED BY $MYSQLPASS; 
create database $MYSQLDB; 
grant usage on *.* to [email protected] identified by $MYSQLPASS; 
grant all privileges on $MYSQLDB.* to [email protected]'; 

收到錯誤消息

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 '$MYSQLPASS' at line 1 

其實$ MYSQLPASS是字符串內容變量。當我測試時,它不是空的。我究竟做錯了什麼?

回答

1

在Bash腳本中,當字符串被'括起來時,變量不會被它們的值替換。請嘗試使用"代替。

mysql -h localhost -u $MYSQLLOGIN -p$MYSQLROOTPASS -t -e " 
CREATE USER '$USERNAME'@'localhost' IDENTIFIED BY '$MYSQLPASS'; 
create database $MYSQLDB; 
grant usage on *.* to '$USERNAME'@'localhost' identified by '$MYSQLPASS'; 
grant all privileges on $MYSQLDB.* to '$USERNAME'@'localhost';" 
+0

收到錯誤:http://screencast.com/t/O2BFjldjYu – heron

+0

我的壞,你需要在單引號括密碼。 –

+0

...和用戶名也是'localhost'的所有實例... – thebjorn

1

你需要把你的變量在引號,以獲得有效的SQL,和你在插值引號(")有取代變量的字符串。

+0

http://screencast.com/t/O2BFjldjYu – heron