如何從現有的 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_port1- 請將
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.sql1- 請改成您的 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 33061- 系統會要求輸入 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.sql1- 系統將要求您輸入 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 33061- 輸入 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 開發。
