ServBay:將現有 MariaDB 資料庫資料導入本機環境
ServBay 是一款強大的本機 Web 開發環境,內建 MariaDB 資料庫套件。將現有 MariaDB 資料庫(例如來自其他本地環境、遠端伺服器或備份檔案)遷移或匯入到 ServBay 內建的 MariaDB,為常見操作。本文將詳細指引您完成整個流程,確保資料順利轉移到您的 ServBay 本機開發環境中。
概述
本指南將涵蓋如何利用標準的 MariaDB/MySQL 命令列工具(mysqldump
與 mysql
)從來源 MariaDB 實例匯出資料,然後在 ServBay 環境準備目標資料庫,最後將資料匯入 ServBay 的 MariaDB 實例。
前置條件
在開始匯入資料前,請確認您已經做到以下準備:
- 已在 macOS 安裝並執行 ServBay:確保您的 ServBay 應用程式已安裝且正在執行。
- 啟用並運行 ServBay 中的 MariaDB 套件:於 ServBay 介面的“套件”列表確認 MariaDB 套件已啟用並顯示運作中(綠色)。如未運作,請啟動之。
- 您具備來源 MariaDB 資料庫的存取權限:需知曉來源 MariaDB 的主機位址、連接埠(如非預設)、使用者名稱與密碼,以及要匯出的資料庫名稱。
- 您擁有 ServBay 目標 MariaDB 資料庫的存取權限:通常是 ServBay MariaDB 的
root
帳號及密碼。ServBay MariaDB 預設帳號為root
,初始安裝時可能無密碼,或依您安裝/設定時所設。可於 ServBay 介面的資料庫管理區查詢或重設密碼。 - 充足磁碟空間:請確保目標 ServBay 環境具備足夠空間存放匯入資料。
操作步驟
步驟一:從來源 MariaDB 匯出資料
首先,請利用 mysqldump
工具將來源 MariaDB 資料庫匯出為 SQL 檔案。
開啟終端機應用程式:在 macOS 系統中開啟“終端機”。
執行匯出指令:利用
mysqldump
命令連接來源 MariaDB 實例並匯出資料庫。假設來源資料庫名稱為mydatabase_source
,希望將資料匯出至mydatabase.sql
檔案。bashmysqldump -u your_source_username -p -h your_source_host -P your_source_port mydatabase_source > mydatabase.sql
1your_source_username
:替換為來源 MariaDB 的使用者名稱。-p
:執行後會提示輸入該使用者密碼。-h your_source_host
:如來源 MariaDB 非本機(如遠端伺服器),請指定主機位址。若來源在本機且為預設設定,可省略-h
參數。-P your_source_port
:如來源 MariaDB 非預設連接埠 3306,請指定連接埠號碼。通常可省略此參數。mydatabase_source
:替換為欲匯出的來源資料庫名稱。> mydatabase.sql
:將匯出結果導向名為mydatabase.sql
的檔案。此檔案將建立於當前終端機所在目錄。
為方便 ServBay 環境後續存取此 SQL 檔,建議將其儲存於 ServBay 網站根目錄下的暫存資料夾,例如
/Applications/ServBay/www/temp/mydatabase.sql
。您可先匯出至當前目錄,再以mv
指令移動檔案:bashmysqldump -u your_source_username -p mydatabase_source > mydatabase.sql mv mydatabase.sql /Applications/ServBay/www/temp/
1
2注意:請確認
/Applications/ServBay/www/temp/
目錄已存在。
步驟二:準備目標 MariaDB 資料庫(在 ServBay 裡)
匯入資料前,必須先在 ServBay 內建 MariaDB 中建立對應資料庫。
連線至 ServBay 的 MariaDB 資料庫:開啟終端機,以
mysql
指令連接 ServBay MariaDB 實例。ServBay 通常允許透過 Unix socket 或localhost
連接。bashmysql -u root -p
1執行後,系統會提示輸入 ServBay MariaDB
root
用戶密碼。輸入密碼並按 Enter 即可進入 MariaDB 命令列。提示:如不確定
root
密碼或遇連線問題,請檢查 ServBay UI 中 MariaDB 套件的設定或日誌。建立目標資料庫:進入 MariaDB 命令列後,建立一個新資料庫作為匯入目標。建議名稱與來源資料庫一致(如
mydatabase
),但非必要。sqlCREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
1mydatabase
:替換為您想在 ServBay 裡建立的資料庫名稱。CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
:強烈建議明確設定字元集與排序規則,以避免日後亂碼。utf8mb4
可處理多語言與特殊字元。如需保持一致請依來源資料庫設定調整。
離開 MariaDB 命令列:建立完成後,輸入
exit;
回車離開。sqlexit;
1
步驟三:匯入資料至 ServBay 的 MariaDB
接著我們將前述匯出的 SQL 檔匯入至 ServBay 新建的 MariaDB 資料庫。
開啟終端機應用程式:確認您已在終端機。
執行匯入命令:以
mysql
指令將 SQL 檔匯入目標資料庫。bashmysql -u root -p mydatabase < /Applications/ServBay/www/temp/mydatabase.sql
1-u root -p
:使用 ServBay MariaDB 的root
帳號連線,並提示輸入密碼。mydatabase
:替換為步驟二中在 ServBay 建立的資料庫名稱。< /Applications/ServBay/www/temp/mydatabase.sql
:以重導入方式將 SQL 檔內容傳給mysql
。請確保/Applications/ServBay/www/temp/mydatabase.sql
為步驟一存放 SQL 檔的實際路徑。
匯入過程需視 SQL 檔大小而定耗時不一。終端機於匯入過程多半無任何輸出,直到完成或遇錯誤。
步驟四:驗證資料匯入
匯入結束後,強烈建議確認資料已正確匯入 ServBay MariaDB 資料庫。
連線至 ServBay 的 MariaDB 資料庫:
bashmysql -u root -p
1選擇匯入資料的資料庫:
sqlUSE mydatabase;
1mydatabase
:替換為您實際匯入的資料庫名稱。
查詢資料:執行相關查詢,檢查資料庫結構、表是否存在及資料是否已匯入。
sqlSHOW TABLES; -- 檢視所有資料表 SELECT COUNT(*) FROM your_table_name; -- 查看某資料表記錄筆數 SELECT * FROM your_table_name LIMIT 10; -- 查看某資料表前10筆資料
1
2
3your_table_name
:替換為您資料庫中的實際表名。
可比對來源資料庫的資料數或抽查關鍵資料,以確定匯入成功。
處理可能發生的相容性問題
雖然 MariaDB 各版本間通常兼容良好,但資料遷移過程仍可能遇到部分問題。以下彙整常見問題及解決建議:
1. 特定 SQL 語法相容性
如果來源 MariaDB 版本較舊,或使用某些版本專屬語法,匯出 SQL 檔案在較新版 ServBay MariaDB 執行時可能失敗。
- 解決方式:手動編輯匯出的
mydatabase.sql
檔,尋找錯誤的 SQL 指令並修正。可根據錯誤訊息或查閱 MariaDB 官方文件(MariaDB Documentation)調整語法。
2. 儲存引擎不兼容或已棄用
部分舊儲存引擎(如 MyISAM 在某些情境)在新版 MariaDB 已非預設或推薦,或設定有差異。
解決方式:於匯入前,可在 SQL 檔將
ENGINE=MyISAM
或其他舊引擎替全為 ServBay MariaDB 支援且推薦的引擎如ENGINE=InnoDB
。InnoDB 為事務安全存儲引擎,通常是最佳選擇。sql-- 於 SQL 檔中尋找類似 CREATE TABLE `your_table_name` ( -- ... 欄位定義 ... ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- 修改為 CREATE TABLE `your_table_name` ( -- ... 欄位定義 ... ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
1
2
3
4
5
6
7
8
9
3. 用戶及權限未隨資料匯出
mysqldump
預設不會匯出用戶帳號及權限。資料匯入後,來源資料庫的用戶並不會自動建立於 ServBay。
解決方式:匯入完成後,請於 ServBay MariaDB 以
root
用戶手動建立所需用戶及授權。執行CREATE USER
及GRANT
語法。sql-- 建立新用戶 (如 'servbay_user' 僅允許本地端登入,密碼為 'your_password') CREATE USER 'servbay_user'@'localhost' IDENTIFIED BY 'your_password'; -- 賦予該用戶對特定資料庫所有權限 GRANT ALL PRIVILEGES ON mydatabase.* TO 'servbay_user'@'localhost'; -- 若需開放任意主機連線(不建議用於正式環境) -- CREATE USER 'servbay_user'@'%' IDENTIFIED BY 'your_password'; -- GRANT ALL PRIVILEGES ON mydatabase.* TO 'servbay_user'@'%'; -- 重新整理權限 FLUSH PRIVILEGES;
1
2
3
4
5
6
7
8
9
10
11
12- 請將
servbay_user
及your_password
替換為實際想要建立的帳號及密碼。 mydatabase
替換為實際匯入之資料庫名稱。- 請依需要調整
@'localhost'
或@'%'
。
- 請將
4. 字元集與排序規則(Character Set and Collation)不同
若來源與目標資料庫使用不同的字元集或排序規則,匯入時可能導致亂碼,特別是含非 ASCII 字元的資料。
- 解決方式:步驟二建立資料庫時,請明確指定與來源資料庫相同(或更廣泛兼容,如
utf8mb4
)的字元集及排序規則。若已匯入出現亂碼,建議刪除該資料庫,確認 SQL 檔編碼無誤後重新處理,並於 SQL 檔開頭加入強制設定字元集(例如SET NAMES 'utf8mb4';
),再重建資料庫及匯入。
ServBay 專屬注意事項
- MariaDB 憑證:前述 ServBay MariaDB
root
密碼可於 ServBay UI 查詢或重設。 - 日誌檔案:如匯入過程遇錯,可檢查 ServBay MariaDB 的錯誤日誌,通常位於 ServBay 安裝目錄的
logs
資料夾內,以獲得進一步資訊。 - 效能考量:匯入大型資料庫時可能耗時甚久,期間 ServBay MariaDB 也可能佔用較多系統資源。
常見問題解答 (FAQ)
Q: 匯入過程被中斷怎麼辦?
A: 若匯入過程中斷,資料庫通常處於不完整狀態。建議先刪除目標資料庫(DROP DATABASE mydatabase;
),再重新建立(CREATE DATABASE mydatabase;
)並再次執行匯入。
Q: 匯出的 SQL 檔案龐大,還有更好匯入方式嗎?
A: SQL 檔太大時,直接用 <
重導可能消耗大量記憶體或效率不佳,可考慮在 MariaDB 命令列內使用 source
指令執行 SQL 檔案:
- 連進 ServBay MariaDB:
mysql -u root -p
- 選擇資料庫:
USE mydatabase;
- 執行 source 指令:
SOURCE /path/to/your/large_database.sql;
此法更穩定,但需先進 MariaDB 客戶端。
Q: 我能在 ServBay UI 裡匯入資料嗎?
A: ServBay UI 以套件管理、網站設定、日誌檢視為主。資料庫匯入/匯出通常建議用命令列工具(如 mysql
、mysqldump
或 phpMyAdmin/Adminer 等圖形工具)。ServBay 內建 Adminer,可於 ServBay UI 進入 Adminer 進行匯入,對只需少量匯入或不熟命令列者較為方便。
總結
將現有 MariaDB 資料庫匯入 ServBay 的 MariaDB 環境是一項標準資料遷移作業。利用 mysqldump
匯出,再透過 mysql
匯入至 ServBay,您可輕鬆完成此流程。請務必確實確認前置條件、處理潛在相容性問題(如字元集、儲存引擎、用戶權限),並驗證匯入成果。ServBay 提供穩定的本機開發環境,助您順利運作 MariaDB 資料庫並支持各種 Web 開發需求。