如何從現有的 MySQL 資料庫匯入數據到 ServBay 的 MariaDB
ServBay 是一款功能強大的本機 Web 開發環境,內建 MariaDB 作為預設的資料庫管理系統。MariaDB 與 MySQL 具有高度兼容性,因此將數據從現有的 MySQL 實例遷移到 ServBay 內建的 MariaDB 相對簡單直接。本文將詳細說明如何將您的 MySQL 資料庫匯出並順利匯入到 ServBay 環境的 MariaDB 中。
概述
本指南旨在協助開發者將現有專案或資料的 MySQL 資料庫遷移到 ServBay 的 MariaDB。如此一來,您可以直接在 ServBay 環境下進行本機開發與測試,充分享受 ServBay 帶來的高效與便利。
適用場景
- 將線上或其他本機裝置上的 MySQL 資料庫遷移到 ServBay 環境,以便進行本機開發。
- 合併或備份現有的 MySQL 資料至 ServBay 的 MariaDB 實例。
- 在 ServBay 環境中測試應用程式對現有 MySQL 數據的兼容性。
前置條件
在開始匯入流程前,請確認以下條件皆已符合:
- 已安裝並運行 MySQL:需有一個包含待匯出數據的 MySQL 資料庫實例,並確定連線資訊(主機、埠號、用戶名稱、密碼)。
- 已安裝並啟動 ServBay:ServBay 內建了 MariaDB,請務必確認 ServBay 正在運行且 MariaDB 服務已啟動。您可於 ServBay 主介面「套件」列表中查看 MariaDB 的狀態。
- ServBay MariaDB 連線資訊:需掌握 ServBay MariaDB 的連線資訊。預設狀況下,MariaDB 運作於
127.0.0.1
(或localhost
)的3306
埠,預設使用者為root
。可於 ServBay 應用的「資料庫」分頁中取得詳細資訊與預設root
密碼。強烈建議初次使用時記錄密碼,或適時更改密碼。 - 資料庫用戶權限:確認您有來源 MySQL 資料庫的匯出權限,以及 ServBay MariaDB 資料庫的匯入與建庫權限(通常 ServBay MariaDB 的
root
使用者具備相關權限)。 - 終端機操作能力:需能使用終端機(Terminal)執行資料庫匯出與匯入指令。本教學所用指令以 macOS 或 Linux 環境 Terminal 為例。
步驟一:從來源 MySQL 資料庫匯出數據
首先,請使用 mysqldump
工具將您的 MySQL 資料庫匯出為 SQL 檔案。
- 開啟終端機:啟動您的 macOS 終端機程式。
- 連線至來源 MySQL 資料庫: 在終端機輸入下列指令以連線 MySQL,系統會提示輸入密碼。bash
mysql -u your_mysql_username -p -h your_mysql_host -P your_mysql_port
1- 請將
your_mysql_username
替換成您的 MySQL 用戶名稱。 - 將
your_mysql_host
替換成 MySQL 伺服器位置(如localhost
或對應 IP)。 - 將
your_mysql_port
替換為您的 MySQL 埠號(非預設 3306 時需特別指定)。 - 若於執行 MySQL 的同一台主機上,且使用預設埠,可簡化為
mysql -u your_mysql_username -p
。
- 請將
- 匯出資料庫: 使用
mysqldump
指令將指定資料庫匯出。假設資料庫名稱為mydatabase
,可如下操作:bashmysqldump -u your_mysql_username -p mydatabase > mydatabase.sql
1- 請改成您的 MySQL 用戶名稱。
- 把
mydatabase
換為欲匯出的資料庫名稱。 - 此指令會將資料庫結構與數據匯出為目前所在目錄下的
mydatabase.sql
檔案。亦可自訂完整路徑,例:/path/to/your/directory/mydatabase.sql
。 - 若需匯出所有資料庫,可加上
--all-databases
參數(請謹慎操作)。 - 如僅需部分資料表,可於資料庫名稱後加上表名依序列出。
步驟二:在 ServBay 的 MariaDB 準備資料庫
匯入數據前,建議於 MariaDB 預先建立一個新的空資料庫,用於接收匯出的數據。
- 開啟終端機:如尚未開啟,請啟動終端機。
- 連線至 ServBay 的 MariaDB 資料庫: 使用 ServBay MariaDB 的連線資訊(預設為
root
用戶及於 ServBay 應用顯示的密碼)。bashmysql -u root -p -h 127.0.0.1 -P 3306
1- 系統會要求輸入 ServBay MariaDB 的
root
密碼,可於 ServBay 應用「資料庫」分頁查得。 - 若已異動 MariaDB 埠或主機地址,請調整
-h
與-P
參數。
- 系統會要求輸入 ServBay MariaDB 的
- 建立新資料庫: 進入 MariaDB 命令列後,執行以下 SQL 指令新增資料庫。建議名稱與原本一致,例如
mydatabase
。sqlCREATE DATABASE mydatabase;
1- 將
mydatabase
依您需求替換成希望使用的資料庫名稱。
- 將
步驟三:將數據匯入 ServBay 的 MariaDB
現在,您可將剛剛匯出的 SQL 檔案匯入至 ServBay MariaDB 新資料庫中。
- 開啟終端機:確認您可於終端機直接存取
mydatabase.sql
檔案。若檔案不在當前目錄,請指定完整路徑。 - 匯入 SQL 檔案: 使用
mysql
指令將 SQL 檔案匯入至 ServBay 的 MariaDB。bashmysql -u root -p -h 127.0.0.1 -P 3306 mydatabase < mydatabase.sql
1- 系統將要求您輸入 ServBay MariaDB 的
root
密碼。 - 請確認
mydatabase
為上一步新建的資料庫名稱。 mydatabase.sql
應為步驟一匯出的 SQL 檔案名稱(或完整路徑)。
- 系統將要求您輸入 ServBay MariaDB 的
依 SQL 檔案大小及資料庫結構複雜度,匯入過程所需時間長短不一。執行期間 Terminal 可能無太多輸出,直到匯入結束。
步驟四:驗證數據已成功匯入
匯入後強烈建議連線至 ServBay 的 MariaDB,確認數據是否正確匯入。
- 連線至 ServBay 的 MariaDB:bash
mysql -u root -p -h 127.0.0.1 -P 3306
1- 輸入 ServBay MariaDB 的
root
密碼。
- 輸入 ServBay MariaDB 的
- 切換至目標資料庫:sql
USE mydatabase;
1- 將
mydatabase
換成您匯入的資料庫名稱。
- 將
- 資料查詢驗證: 執行簡單查詢檢查資料表及資料是否正確。例如:sql
SHOW TABLES; -- 檢查所有表 SELECT COUNT(*) FROM your_table_name; -- 查詢某表的資料行數 SELECT * FROM your_table_name LIMIT 10; -- 觀看某表前10筆記錄
1
2
3your_table_name
請替換成實際資料庫的表名。
若查詢結果皆與預期吻合,表示數據匯入成功。
處理可能的兼容性問題
雖然 MariaDB 和 MySQL 高度兼容,在少數情況下仍可能出現部分差異。常見問題與解法如下:
1. 特定 SQL 語法不兼容
某些 MySQL 特有的 SQL 語法或函式在 MariaDB 可能未支援或行為略有不同。
- 解決方法:若遇語法錯誤,請編輯匯出的
mydatabase.sql
檔案,搜尋並修改導致錯誤的 SQL 語句,使其符合 MariaDB 語法規定。可查閱 MariaDB 官方文件尋找替代寫法。
2. 儲存引擎不兼容
MySQL 與 MariaDB 皆支援多種儲存引擎(如 InnoDB, MyISAM, Aria, XtraDB 等)。部分 MySQL 專有引擎(如 Archive, Blackhole 等)MariaDB 可能不支援,反之亦然,常見的 InnoDB
則於兩者中表現良好。
- 解決方法:若您的資料表引擎不被 MariaDB 支援,匯入時將出現警告或錯誤。您可於匯入前編輯
.sql
檔案,將不支援的儲存引擎名稱改為 MariaDB 支援的,如ENGINE=InnoDB
。或於匯入後,進入 MariaDB,針對每個資料表依序執行ALTER TABLE table_name ENGINE = InnoDB;
。
3. 用戶與權限
由 mysqldump
匯出的 SQL 檔案通常不含用戶與權限資訊。即使包含,用戶認證系統與權限存儲方式於 MySQL 和 MariaDB 間可能有差異,直接導入用戶表可能導致錯誤。ServBay 的 MariaDB 預設提供一組 root
用戶,您應以此帳號管理或新建應用程式用戶。
- 解決方法:匯入數據後,請於 ServBay 的 MariaDB 重新建立應用程式所需用戶並分配適當權限。進入 MariaDB 後,以標準 SQL
CREATE USER
與GRANT
指令配置,例如:sql-- 建立新用戶(請視情況替換 'your_username', 'localhost', 'your_password') CREATE USER 'your_username'@'localhost' IDENTIFIED BY 'your_password'; -- 賦權給特定資料庫 GRANT ALL PRIVILEGES ON mydatabase.* TO 'your_username'@'localhost'; -- 刷新權限設置 FLUSH PRIVILEGES;
1
2
3
4
5
6
7
8your_username
、localhost
(依應用連接需求,可能為localhost
或%
)、your_password
及mydatabase
請依實際情況替換。- 若忘記 ServBay MariaDB 的
root
密碼,ServBay 提供重置(包括 MariaDB 及 PostgreSQL)root
密碼功能,請參考 ServBay 應用或文件說明。
小結
將現有 MySQL 資料庫數據匯入 ServBay 內建的 MariaDB,是將開發流程順利遷移至 ServBay 平台的關鍵步驟。此過程以 mysqldump
匯出原始數據、建立目標 MariaDB 資料庫、透過 mysql
指令匯入 SQL 檔案,並最終驗證匯入成果為主。依照本文詳列步驟進行,並妥善處理可能發生的兼容性問題,您必能順暢地完成資料庫遷移,且在 ServBay 中繼續高效從事 Web 開發。