문제

질문 다시 작성 :

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"
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top