Hello Guys,
This is a simple bash script I wrote to dump all the databases ( excluding information_schema
and mysql
. I thought I’d share it with you. Someone might find it useful, others might find it silly ๐ But, anyway, here it is
#!/bin/bash
# Checking if the /root/.my.cnf file exists or not
if [[ ! -f /root/.my.cnf ]]
then
echo "/root/.my.cnf does not exist"
echo "Did not dump any db. Exiting"
exit
fi
dbs=$(mysql -e "SHOW DATABASES" | sed '1d')
mkdir -p dumped_dbs/
for i in $dbs
do
if [[ "$i" != "mysql" ]] && [[ "$i" != "information_schema" ]]; then
echo "Dumping $i to dumped_dbs/${i}.sql"
mysqldump $i > dumped_dbs/${i}.sql
fi
done
count=$(ls dumped_dbs/ | wc -l)
echo "============================="
echo "DONE! Dumped $count databases"
While running the script, if you get the error saying /root/.my.cnf
does not exist, then you need to create that file with the following content
[client]
user=root
password=your_mysql_password
This is the cnf file that helps us to run MySQL without having to type in the MySQL root password. Once the databases are dumped, you can find individual dumps under the folder dumped_dbs