0
我已經創建了一個像這樣的shell腳本,但我得到授予命令的語法錯誤。請有人可以幫我嗎?逃脫字符與雙qoutes逃脫字符在shell腳本中的雙qou
ssh -t [email protected] '
su root -c "
echo \"Give db name :\";
read db_name;
echo \"Give password :\";
read db_pass;
host=localhost;
sql1=\"create database \$db_name;\";
sql2=\"grant all on \${db_name}.* to \${db_name}@\${host} identified by \"\${db_pass}\";\";
sql3=\"\${sql1}\${sql2}\";
echo \"==============\";
mysql -u root -p -e \"\${sql3}\";
";
'
您將數據庫對象的'GRANTS'賦予特定的'user',而不是數據庫名!修改您的語句,像這樣'sql2 = \「授予\\ {{db_name}。*全部\\ {用戶名} @ \ $ {主機} \ \ {\ {db_pass} \」; \「;' – Incognito 2013-03-07 06:18:41
MYSQL會自動創建一個帶有用戶名的mysql用戶,無論我們給出了什麼。這裏的db_name是可變的,它包含一個字符串值,並且mysql將創建一個與db_name相同的用戶名的mysql用戶。 – user103134 2013-03-07 06:26:38
這裏我認爲問題出現在grant命令中的\ $ db_pass之前和之後的字符 – user103134 2013-03-07 06:27:54