How to Back Up and Restore a MySQL Database?
To back up a MySQL database, use mysqldump with the syntax mysqldump -u [username] -p [database_name] > backup_file.sql, which creates a SQL file containing all necessary commands to recreate the database, and include options like --databases, --all-databases, or --routines as needed; always prefer prompting for the password securely rather than including it in the command.To restore a MySQL database, ensure the target database exists or create it using CREATE DATABASE, then run mysql -u [username] -p [database_name]
Backing up and restoring a MySQL database is essential for data safety, disaster recovery, and migrations. The most common and reliable method uses mysqldump
for backups and the mysql
command-line tool for restoration. Here’s how to do it step by step.

1. Back Up a MySQL Database Using mysqldump
mysqldump
is a utility that generates a SQL file containing commands to recreate your database (tables, data, stored procedures, etc.).
Basic Syntax:
mysqldump -u [username] -p[password] [database_name] > backup_file.sql
Example:
mysqldump -u root -p my_database > my_database_backup.sql
- You’ll be prompted to enter the password after running the command.
- The backup file (
my_database_backup.sql
) will be created in your current directory.
Common Options:
Backup multiple databases:
mysqldump -u root -p --databases db1 db2 > backup_multiple.sql
Backup all databases:
mysqldump -u root -p --all-databases > full_backup.sql
Include stored procedures and events:
mysqldump -u root -p --routines --events my_database > backup_with_routines.sql
Add timestamp to filename (recommended):
mysqldump -u root -p my_database > my_database_$(date %F).sql
This creates a file like
my_database_2025-04-05.sql
.
? Security Note: Avoid writing the password directly in the command (e.g.,
-pmypassword
) as it may be visible in shell history. Use-p
alone to prompt securely.
2. Restore a MySQL Database from Backup
To restore, you use the mysql
command to execute the SQL dump file.
Prerequisites:
- Make sure the target database exists (or create it):
CREATE DATABASE my_database;
Basic Restore Command:
mysql -u [username] -p [database_name] < backup_file.sql
Example:
mysql -u root -p my_database < my_database_backup.sql
- Enter your password when prompted.
- The command reads the SQL file and re-creates tables and inserts data.
Notes:
- If the database doesn’t exist, create it first.
- If restoring a full backup (
--all-databases
), don’t specify a database name:mysql -u root -p < full_backup.sql
3. Best Practices for MySQL Backups
To keep your data safe and recovery smooth:
✅ Schedule regular backups using
cron
(Linux) or Task Scheduler (Windows). Example cron job (daily at 2 AM):0 2 * * * mysqldump -u root -pYourPassword my_database > /backups/my_database_$(date \%F).sql
✅ Compress backup files to save space:
mysqldump my_database | gzip > my_database_$(date %F).sql.gz
To restore from
.gz
:gunzip < my_database_2025-04-05.sql.gz | mysql -u root -p my_database
✅ Test your backups periodically by restoring to a test server.
✅ Store backups offsite or in cloud storage (e.g., AWS S3, Google Drive) for disaster recovery.
✅ Avoid restoring over a live production database without a rollback plan.
- Log in to phpMyAdmin.
- Select your database.
- Click Export → Choose "Custom" → Download SQL file.
- To restore: Select database → Import → Upload the
.sql
file.
4. Alternative: Using phpMyAdmin (for small databases)
If you're on shared hosting or prefer a GUI:
⚠️ phpMyAdmin has file size limits (often 50–100MB). Use command line for larger databases.
Basically, mysqldump
and mysql
are the go-to tools for reliable, scriptable backups and restores. The process isn’t complicated, but consistency and testing are key.
The above is the detailed content of How to Back Up and Restore a MySQL Database?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

To display all databases in MySQL, you need to use the SHOWDATABASES command; 1. After logging into the MySQL server, you can execute the SHOWDATABASES; command to list all databases that the current user has permission to access; 2. System databases such as information_schema, mysql, performance_schema and sys exist by default, but users with insufficient permissions may not be able to see it; 3. You can also query and filter the database through SELECTSCHEMA_NAMEFROMinformation_schema.SCHEMATA; for example, excluding the system database to only display the database created by users; make sure to use

To add a primary key to an existing table, use the ALTERTABLE statement with the ADDPRIMARYKEY clause. 1. Ensure that the target column has no NULL value, no duplication and is defined as NOTNULL; 2. The single-column primary key syntax is ALTERTABLE table name ADDPRIMARYKEY (column name); 3. The multi-column combination primary key syntax is ALTERTABLE table name ADDPRIMARYKEY (column 1, column 2); 4. If the column allows NULL, you must first execute MODIFY to set NOTNULL; 5. Each table can only have one primary key, and the old primary key must be deleted before adding; 6. If you need to increase it yourself, you can use MODIFY to set AUTO_INCREMENT. Ensure data before operation

Check whether the MySQL service is running, use sudosystemctlstatusmysql to confirm and start; 2. Make sure that bind-address is set to 0.0.0.0 to allow remote connections and restart the service; 3. Verify whether the 3306 port is open, check and configure the firewall rules to allow the port; 4. For the "Accessdenied" error, you need to check the user name, password and host name, and then log in to MySQL and query the mysql.user table to confirm permissions. If necessary, create or update the user and authorize it, such as using 'your_user'@'%'; 5. If authentication is lost due to caching_sha2_password

Using mysqldump is the most common and effective way to back up MySQL databases. It can generate SQL scripts containing table structure and data. 1. The basic syntax is: mysqldump-u[user name]-p[database name]>backup_file.sql. After execution, enter the password to generate a backup file. 2. Back up multiple databases with --databases option: mysqldump-uroot-p--databasesdb1db2>multiple_dbs_backup.sql. 3. Back up all databases with --all-databases: mysqldump-uroot-p

B-TreeindexesarebestformostPHPapplications,astheysupportequalityandrangequeries,sorting,andareidealforcolumnsusedinWHERE,JOIN,orORDERBYclauses;2.Full-Textindexesshouldbeusedfornaturallanguageorbooleansearchesontextfieldslikearticlesorproductdescripti

UNIONremovesduplicateswhileUNIONALLkeepsallrowsincludingduplicates;1.UNIONperformsdeduplicationbysortingandcomparingrows,returningonlyuniqueresults,whichmakesitsloweronlargedatasets;2.UNIONALLincludeseveryrowfromeachquerywithoutcheckingforduplicates,

You can customize the separator by using the SEPARATOR keyword in the GROUP_CONCAT() function; 1. Use SEPARATOR to specify a custom separator, such as SEPARATOR'; 'The separator can be changed to a semicolon and plus space; 2. Common examples include using the pipe character '|', space'', line break character '\n' or custom string '->' as the separator; 3. Note that the separator must be a string literal or expression, and the result length is limited by the group_concat_max_len variable, which can be adjusted by SETSESSIONgroup_concat_max_len=10000; 4. SEPARATOR is optional

TheINoperatorinMySQLchecksifavaluematchesanyinaspecifiedlist,simplifyingmultipleORconditions;itworkswithliterals,strings,dates,andsubqueries,improvesqueryreadability,performswellonindexedcolumns,supportsNOTIN(withcautionforNULLs),andcanbecombinedwith
