3

I am running a mysqldump via a bash script and have encountered a problem with a password that contains special characters.

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

How do I escape the password?

2 Answers 2

5

Even better, don't put the username or password on the command line where it can be seen by anyone who can do ps -ef.

Create a control file named something like /etc/mysqldump.cnf:

[client] user=root password=YOUR_MYSQL_ROOT_PASSWORD 

...where client is literal (not the name of your server) and YOUR_MYSQL_ROOT_PASSWORD is... well... your mysql root password.

Then invoke like this:

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

Personally my invocation is more like this:

#!/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 

I've never figured out how to use a similar --defaults-file parameter for mysql, however since this command runs fairly quickly the risk of exposure is much lower... although really that should be fixed.

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

It works?

1
  • Yes, this worked. Commented Mar 25, 2010 at 11:44

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.