Назад | Перейти на главную страницу

Экранирование пароля с помощью консоли mysqldump

Я запускаю mysqldump через сценарий bash и столкнулся с проблемой с паролем, содержащим специальные символы.

mysqldump -hlocalhost -uUSERNAME -pPA$$W0RD DATABASE | 
                                gzip > /home/USERNAME/backups-mysql/BACKUP.gz

Как мне избежать пароля?

Более того, не помещайте имя пользователя или пароль в командную строку, где его может увидеть любой, кто может ps -ef.

Создайте контрольный файл с именем что-то вроде /etc/mysqldump.cnf:

[client]
user=root
password=YOUR_MYSQL_ROOT_PASSWORD

...где client буквально (не имя вашего сервера) и YOUR_MYSQL_ROOT_PASSWORD это ... ну ... ваш пароль root mysql.

Затем вызовите так:

mysqldump --defaults-file=/etc/mysqldump.cnf DATABASE |                                 gzip > /home/USERNAME/backups-mysql/BACKUP.gz

Лично мой призыв больше похож на это:

#!/bin/bash
NOW=`perl -e 'print time;'`
cd /opt/backup/mysql
mkdir $NOW
for i in `echo "show databases" | mysql -u root --password="MySqlRootPassword" | grep -v Database`; do
        mysqldump --defaults-file=/etc/mysqldump.cnf --databases $i --opt > $NOW/$i.dump
one
tar cfpz $NOW.tgz $NOW
du -sh $NOW $NOW/* > $NOW.report
rm -rf $NOW

Я так и не понял, как пользоваться подобным --defaults-file параметр для mysql, однако, поскольку эта команда выполняется довольно быстро, риск раскрытия намного ниже ... хотя на самом деле это должно быть исправлено.

mysqldump -hlocalhost -uUSERNAME -p'PA$$W0RD' DATABASE | 
                                gzip > /home/USERNAME/backups-mysql/BACKUP.gz

Оно работает?