가상 호스트 및 관련 데이터베이스를 복제하는 스크립트가 있지만 mysql 명령 중 하나가 작동하지 않습니다. 실패하고 유효한 인수가 전달되지 않은 것처럼 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}'";