在 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 指令即時產生日期時間,方便管理。
✅ 可以寫成腳本自動化。