2009-11-03 4 views
2

Вопрос переписан: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 [email protected]$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 

Что мне не хватает?

+0

работает для меня, MySQL 5.0.51, 3.2.39 BASH. Вы используете его внутри другого скрипта? Это выполняется, если вы запускаете его через командную строку? –

+0

Я переделал свой вопрос, чтобы объяснить, что я делаю, а не то, что я основываю на нем! Надеюсь, это поможет! – Lizard

+0

Я бы сказал, что это 'ssh -p 8899 root @ $ REMOTEIP" mysql -u root -p $ SQL "" 'не может работать из-за кавычек ... но у меня нет машины, чтобы попробовать но еще ... попытайтесь избежать котировок вокруг $ SQL. – Bobby

ответ

3

Вы отсутствуют цитаты и правильная команда MySQL клиента строка:

ssh -p 8899 [email protected]$REMOTEIP "mysql -u root -p -e \"$SQL\"" 

Вы должны избежать кавычек переменного $ SQL, таким образом они получают передаются в удаленную оболочку, иначе они интерпретируются с помощью местного shell (вот почему вы получаете команду DROP: команда не найдена, полутол дьют интерпретируется оболочкой.) Кроме того, чтобы клиент mysql выполнил команду, вам необходимо передать параметр командной строки -e.

0

ли вы попробовать это:

ssh -p 8899 [email protected]$REMOTEIP "echo \"$SQL\" | mysql -u root --password=$SQL_PASS" 
+0

Это также не удастся из-за отсутствия кавычек.Это имеет дополнительную проблему, что клиент mysql интерпретирует SQL как пароль. –

+0

Да, должно было измениться '- p' to '--password = $ PASS_VARIABLE'. Исправлено. – Pascal

+0

Пока $ PASS_VARIABLE считывается из аргументов (и не сохраняется в скрипте), это должно быть хорошо. –

 Смежные вопросы

  • Нет связанных вопросов^_^