Pergunta

Pergunta reescrita:

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

Em seguida, execute:

/root/testing/migratesite.sh

e obter:

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

O que eu estou ausente?

Foi útil?

Solução

Está faltando citações e uma linha de comando do cliente mysql adequada:

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

Você precisa escapar as aspas em torno a variável $ SQL para que eles se passado para o shell remoto, então eles se interpretado pelo shell local (é por isso que você começa GOTA: comando não encontrado, o ponto e vírgula é interpretada pelo shell .) Além disso, para que o cliente mysql para executar um comando que você tem que passar a opção de linha de comando -e.

Outras dicas

Você tentou o seguinte:

ssh -p 8899 root@$REMOTEIP "echo \"$SQL\" | mysql -u root --password=$SQL_PASS"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top