仮想ホストと関連データベースを複製するスクリプトがありますが、mysqlコマンドの1つは機能しません。失敗して有効な引数が渡されていないかのように、mysqlのバージョン番号と「使用方法」情報が印刷されますが、エラーは発生しません。
以下はスクリプトの短縮バージョンです。これは、新しいデータベースを作成し、失敗したときに権限を付与する必要がある行です。何が間違っているのか、どうすれば問題を解決できるのか、アドバイスをいただきありがとうございます。
ありがとうございます。
#!/bin/bash -e
clear
echo "MySQL Admin Password: "
read -s mysqlpass
echo "New Site name (short, a-zA-Z only)"
read -e newsitename
echo "Last chance - sure you want to run the script? (y/n)"
read -e run
if [ "$run" == y ] ; then
# This command doesn't work
dbsetup="CREATE DATABASE "$newsitename"_db;GRANT ALL PRIVILEGES ON "$newsitename"_db.* TO 'site_usr'@'localhost';FLUSH PRIVILEGES;"
mysql -u root -p$mysqlpass -e "$dbsetup"
mysqldump -u root -p$mysqlpass template_db > temp.sql
dbimport=$newsitename"_db < temp.sql"
mysql -u root -p$mysqlpass $dbimport
else
exit
fi
答え1
あなたは試すことができます:
dbsetup="CREATE DATABASE ${newsitename}_db;GRANT ALL PRIVILEGES ON ${newsitename}_db.* TO 'site_usr'@'localhost';FLUSH PRIVILEGES;"
二重引用符は文字列を破損します。
答え2
これはシェルスクリプトで動作します。
environment_id=10
mysql -u root -proot dbname -e "update environment SET deployment_status = 1 WHERE environment_id = '${environment_id}'";