MySQL 데이터베이스 및 사용자 스크립트를 만듭니다
문제
질문 다시 작성 :
HOMEDIR="ftpuser"
REMOTEIP="1.1.1.1"
MYSQLPASS="password"
Q1="DROP USER "$HOMEDIR"_shop;"
Q2="DROP DATABASE "$HOMEDIR"_shop;"
Q3="CREATE DATABASE IF NOT EXISTS "$HOMEDIR"_shop;"
Q4="GRANT ALL ON "$HOMEDIR"_shop TO '"$HOMEDIR"_shop'@'localhost' IDENTIFIED BY '$MYSQLPASS';"
Q5="GRANT ALL ON "$HOMEDIR"_shop TO '"$HOMEDIR"_shop'@'anotherip' IDENTIFIED BY '$MYSQLPASS';"
# Need to grant permissions from another server as well
Q6="FLUSH PRIVILEGES;"
SQL="${Q1}${Q2}${Q3}${Q4}${Q5}${Q6}"
echo $SQL
echo " "
ssh -p 8899 root@$REMOTEIP "mysql -u root -p "$SQL""
그런 다음 달리기 :
/root/testing/migratesite.sh
그리고 얻다:
bash: DROP: command not found
bash: CREATE: command not found
bash: GRANT: command not found
bash: GRANT: command not found
bash: FLUSH: command not found
내가 무엇을 놓치고 있습니까?
해결책
인용문이없고 적절한 MySQL 클라이언트 명령 줄 :
ssh -p 8899 root@$REMOTEIP "mysql -u root -p -e \"$SQL\""
$ SQL 변수 주위의 따옴표를 피해 원격 쉘으로 전달되도록해야합니다. 그렇지 않으면 로컬 쉘에 의해 해석됩니다. , MySQL 클라이언트가 명령을 실행하려면 -e 명령 줄 옵션을 전달해야합니다.
다른 팁
당신은 이것을 시도 했습니까 :
ssh -p 8899 root@$REMOTEIP "echo \"$SQL\" | mysql -u root --password=$SQL_PASS"
제휴하지 않습니다 StackOverflow