在 Linux 系統上,我們常常需要定期備份 MySQL/MariaDB 資料庫,以防資料遺失。這篇教學將完整說明:
✅ 如何用 mysqldump
備份資料庫
✅ 密碼中有特殊符號時的處理方式
✅ 備份檔案自動加上當前時間命名
基本備份指令
MySQL/MariaDB 提供的 mysqldump
工具可以輕鬆將資料庫備份成 .sql
純文字檔案。
最簡單的語法如下:
mysqldump -u [帳號] -p [資料庫名稱] > /path/to/backup.sql
例如:
mysqldump -u root -p mydb > /home/user/backup_mydb.sql
執行後會提示輸入密碼:
Enter password:
輸入正確密碼後就會在指定路徑產生 .sql
備份檔。
密碼裡有特殊符號怎麼辦?
如果你的密碼中包含特殊符號(例如:$
, #
, @
, !
等),建議以下幾種做法:
方法 1️⃣:手動輸入
在命令列加上 -p
,執行時再手動輸入密碼即可:
mysqldump -u zoearth_999 -p zoearth_999 > backup.sql
執行後提示:
Enter password:
此時輸入密碼(不會顯示),按 Enter。
方法 2️⃣:用單引號包住密碼
如果要在命令列一次輸入,可以這樣:
mysqldump -u zoearth_999 -p'密碼' zoearth_999 > backup.sql
注意事項:
-
-p
和密碼之間不要有空格。 -
建議用單引號
'密碼'
包住,避免特殊字元被 Shell 解讀。
錯誤寫法(不要有空格):
mysqldump -u zoearthm_moon -p '密碼' … # ❌
正確寫法:
mysqldump -u zoearth_999 -p'密碼' … # ✅
備份檔案自動加上當前時間
如果你希望備份檔名自動包含執行當下的日期時間,可以搭配 date
指令:
mysqldump -u zoearth_999 -p'9999999' zoearth_999 > /volume1/BACKUP/backup_$(date +%Y%m%d%H%M).sql
當你執行時,會產生像這樣的檔名:
backup_202507101439.sql
日期格式自訂
你可以自由調整 date
格式:
-
%Y
年 (2025) -
%m
月 (07) -
%d
日 (10) -
%H
小時 (24小時制) -
%M
分鐘
例如這樣格式化:
$(date +%Y-%m-%d_%H-%M)
檔名會是:
backup_2025-07-10_14-39.sql
完整指令:
mysqldump -u zoearth_999 -p'9999999' zoearth_999 > /volume1/BACKUP/backup_$(date +%Y-%m-%d_%H-%M).sql
建議:寫成備份腳本
如果你經常需要備份,可以寫成一個簡單的 Shell Script:
#!/bin/bash DB_USER="zoearth_999" DB_PASS="9999999" DB_NAME="zoearth_999" BACKUP_DIR="/volume1/BACKUP" mysqldump -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" > "$BACKUP_DIR/backup_$(date +%Y%m%d%H%M).sql"
儲存檔案,例如叫 backup_db.sh
,並設定執行權限:
chmod +x backup_db.sh ./backup_db.sh
小結
✅ 用 mysqldump
備份 MySQL 資料庫很簡單。
✅ 密碼有特殊符號時,記得用單引號包起來或執行時手動輸入。
✅ 檔名可以搭配 date
指令即時產生日期時間,方便管理。
✅ 可以寫成腳本自動化。
留言板
歡迎留下建議與分享!希望一起交流!感恩!