##MySQL Backup and Restore from Command Line
Assumptions
- You have access to a Unix-like terminal
- You have the password or MySQL's root user, or another user's password with access to the database
###Backup
Backup of a single database
Backup a single database to a plain text file, containing the sql commands to restore the tables and their data
mysqldump -u [user] -p [database_name] > [filename].sql
Backup a single database to a gzipped version of the sql file
mysqldump -u [user] -p [database_name] | gzip > [file_name].sql.gz
Backup a single database to a bz2 compressed sql file.
mysqldump -u [user] -p [database_name] | bzip2 > [file_name].sql.bz2
You can usually upload gz, and bz2 files directly to a database using PHPMyAdmin, so is a good idea to have the outpud compressed.
Backup more than one database
You can backup more than one database at the same time.
mysqldump -u [user] -p –databases [database_name_1] [database_name_2] [database_name_n] > [filename].sql
You can use the same options as with the single database to compress the mysqldump command output.
Backup of all databases
mysqldump -u [user] -p –all-databases > [file_name].sql
This will dump all databases to a single file, and you can use that file to restore all databases at once. This is very useful to move your databases from one server to another.
###Restore
Using the dump file, it is possible to restore the database with all its tables to a new MySQL server.
Create the database
mysql -u [user] -p
The [user]field in this case will usually be root. At the mysql> root.
create database [database_name];
Create a user for that database, it is actually not needed, but it is a good security measure.
grant all privileges on [database_name].* to [new_user]@[hostname] identified by [new_user_password];
exit;
Once again on the Linux command line prompt.
Restore database dump file
mysql -u [new_user] -p [database_name] < [file_name].sql
If the file was compressed, uncompressed it first.
gunzip [file_name].sql.gz
bunzip2 [file_name].sql.bz2