MySQL criar banco de dados e script de usuário
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?
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