Специальные символы в mysql пароле с помощью mysqldump

У меня есть следующий ssh сценарий:

#Here I am getting the mysql password for the root user
password=$(cat /root/.my.cnf | grep "password" |  awk -F\" '{print $2}') 

#here I am trying to dump the database remotely
mysqldump -uroot -p$password $db |  ssh root@$destination_server "cat > /backup/mysql/$db.sql"

Вещь состоит в том, что я получаю следующую ошибку:

/bin/bash: -c: line 0: syntax error near unexpected token `)'
/bin/bash: -c: line 0: `mysqldump -uroot -pbyt)uy6 database_name '

Я протестировал довольно много, и я нашел, что ошибка вызывается из-за специального символа в пароле. Так как я получаю пароль из .my.cnf файла, я не могу выйти из него жестким кодированием символы ESC.

Может любой предлагать мне способ, возможно, искать те специальные символы в переменной $password и добавить к тем наклонным чертам Escape (" \").

Править: Я забыл упоминать, что я выполняю это через OpenVZ частичная виртуализация при помощи vzctl исполнительной команды, которая является причиной, почему мне был нужен метод, который позволит мне выходить из специальных символов, как я запросил. Метод у меня есть разработчик, был простым использованием команды sed:

sed 's/[!-+]/\\&/g' 

Спасибо всем за Вашу справку.

С уважением!

1
задан 25 February 2015 в 15:42
1 ответ

Ничего из этого делать не нужно. Как HBruijn упомянул в комментарии, файл $ HOME / .my.cnf уже содержит ваши учетные данные, и инструменты командной строки MySQL будут использовать их автоматически, без каких-либо дополнительных действий.

Так что просто сделайте:

mysqldump $db |  ssh root@$destination_server "cat > /backup/mysql/$db.sql"
1
ответ дан 4 December 2019 в 00:11

Теги

Похожие вопросы