Question

Question Réécriture:

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""

Je lance alors:

/root/testing/migratesite.sh

Et obtenez:

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

Qu'est-ce que je suis absent?

Était-ce utile?

La solution

Il vous manque des citations et une ligne de commande appropriée client mysql:

ssh -p 8899 root@$REMOTEIP "mysql -u root -p -e \"$SQL\""

Vous devez échapper aux guillemets autour de la variable SQL $ afin qu'ils sont transmis au shell distant, sinon ils sont interprétés par le shell local (c'est pourquoi vous obtenez DROP: command not found, le côlon demi est interprété par le shell .) en outre, pour que le client MySQL pour exécuter une commande, vous devez passer l'option de ligne de commande -e.

Autres conseils

Avez-vous essayé ceci:

ssh -p 8899 root@$REMOTEIP "echo \"$SQL\" | mysql -u root --password=$SQL_PASS"
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top