在 Ubuntu 上恢复 MySQL 数据,常见场景有几种,下面按最常见情况给你讲清楚,你可以对号入座。
先确认 MySQL 已启动:
sudo systemctl status mysql
mysql -u root -p 数据库名 < /path/backup.sql
示例:
mysql -u root -p testdb < /home/ubuntu/testdb.sql
先创建:
mysql -u root -p -e "CREATE DATABASE testdb;"
gunzip < backup.sql.gz | mysql -u root -p 数据库名
或:
zcat backup.sql.gz | mysql -u root -p 数据库名
⚠️ 风险较高,仅适合同版本 MySQL
sudo systemctl stop mysql
sudo cp -r /var/lib/mysql /var/lib/mysql_bak
sudo cp -r /path/old_mysql/* /var/lib/mysql/
sudo chown -R mysql:mysql /var/lib/mysql
sudo systemctl start mysql
mysql -u root -p -e "SHOW BINARY LOGS;"
mysqlbinlog --start-datetime="2024-01-01 10:00:00" \
--stop-datetime="2024-01-01 12:00:00" \
/var/lib/mysql/mysql-bin.000001 | mysql -u root -p
.sql 文件ERROR 1045 (28000): Access denied
→ 检查用户名密码,或加 sudo
→ 物理恢复必须 MySQL 大版本一致
mysqldump -u root -p --all-databases > all.sql
或单库:
mysqldump -u root -p dbname > dbname.sql
如果你能告诉我:
mysql -V)我可以给你更精确的恢复方案。