# MariaDB 安裝指南 (本地部署) ## 概述 本文檔說明如何在 macOS 上安裝 MariaDB,配置為本地部署,支援遠端訪問。 --- ## 當前狀態 | 項目 | 狀態 | |------|------| | MariaDB | ✅ 已安裝 v12.1.2 | | 數據目錄 | /Users/accusys/momentry/var/mariadb/ | | 日誌目錄 | /Users/accusys/momentry/log/ | | Plist | /Library/LaunchDaemons/com.momentry.mariadb.plist | --- ## 安裝步驟 ### Step 1: 安裝 MariaDB (使用 brew) ```bash # 安裝 MariaDB brew install mariadb ``` **驗證**: ```bash mariadb --version # mariadb from 12.1.2-MariaDB ``` --- ### Step 2: 建立目錄結構 ```bash # 建立數據目錄 mkdir -p /Users/accusys/momentry/var/mariadb # 建立配置目錄 mkdir -p /Users/accusys/momentry/etc/mariadb # 建立日誌目錄 mkdir -p /Users/accusys/momentry/log # 建立日誌文件 touch /Users/accusys/momentry/log/mariadb.log touch /Users/accusys/momentry/log/mariadb.error.log # 設定權限 chown -R accusys:staff /Users/accusys/momentry/var/mariadb chown -R accusys:staff /Users/accusys/momentry/etc/mariadb chown -R accusys:staff /Users/accusys/momentry/log ``` **注意**: 如果需要從舊數據遷移,需要先初始化新目錄: ```bash # 初始化新數據目錄 mysql_install_db --datadir=/Users/accusys/momentry/var/mariadb ``` --- ### Step 3: 使用 plist 開機自動啟動 ```bash # 複製 plist 到 LaunchDaemons 目錄 sudo cp /Users/accusys/momentry_core_0.1/momentry_runtime/plist/com.momentry.mariadb.plist /Library/LaunchDaemons/ # 載入並啟動 sudo launchctl load /Library/LaunchDaemons/com.momentry.mariadb.plist ``` --- ## 監控配置 ### 添加到監控配置 在 `monitor/config/monitor_config.yaml` 中添加: ```yaml database: mariadb: enabled: true host: "localhost" port: 3306 user: "root" ``` --- ## 卸載步驟 ### 重要: 路徑說明 | 路徑 | 類型 | 說明 | |------|------|------| | `/Users/accusys/momentry/var/mariadb/` | 數據 | **不要刪除** - 數據目錄 | | `/Users/accusys/momentry/etc/mariadb/` | 配置 | **不要刪除** - 配置目錄 | | `/Users/accusys/momentry/log/` | 日誌 | **不要刪除** - 日誌目錄 | | `/opt/homebrew/opt/mariadb/` | 安裝 | **刪除** - MariaDB 安裝目錄 | ### Step 1: 停止 MariaDB ```bash # 找到 MariaDB 進程 ps aux | grep mariadb | grep -v grep # 停止 MariaDB mysqladmin -u root -p shutdown # 或 pkill mariadbd # 確認停止 ps aux | grep mariadb | grep -v grep || echo "MariaDB 已停止" ``` --- ### Step 2: 卸載 MariaDB ```bash # 卸載 MariaDB brew uninstall mariadb # 移除 plist sudo launchctl unload /Library/LaunchDaemons/com.momentry.mariadb.plist sudo rm /Library/LaunchDaemons/com.momentry.mariadb.plist ``` --- ### Step 3: 刪除專屬檔案 ```bash # 刪除數據目錄 (可選) rm -rf /Users/accusys/momentry/var/mariadb # 刪除日誌 (可選) rm -f /Users/accusys/momentry/log/mariadb.log rm -f /Users/accusys/momentry/log/mariadb.error.log ``` **注意: 不要刪除以下共用目錄**: ```bash # 這些是共用的,不要刪除! # /Users/accusys/momentry/var # /Users/accusys/momentry/log ``` --- ### Step 4: 卸載後檢查清單 ```bash echo "=== MariaDB 卸載後檢查 ===" # 1. 檢查 MariaDB 進程 echo "1. MariaDB 進程:" ps aux | grep mariadb | grep -v grep && echo " ✗ 仍在運行" || echo " ✓ 已停止" # 2. Port 3306 echo "2. Port 3306:" lsof -i :3306 > /dev/null 2>&1 && echo " ✗ 仍被佔用" || echo " ✓ 已釋放" # 3. mariadb 命令 echo "3. mariadb 命令:" which mariadb > /dev/null 2>&1 && echo " ✗ 仍存在" || echo " ✓ 已移除" # 4. brew 安裝 echo "4. brew 安裝:" brew list mariadb > /dev/null 2>&1 && echo " ✗ 仍存在" || echo " ✓ 已移除" # 5. launchctl 服務 echo "5. launchctl 服務:" sudo launchctl list | grep mariadb > /dev/null 2>&1 && echo " ✗ 仍存在" || echo " ✓ 已移除" # 6. 數據目錄 (可選刪除) echo "6. 數據目錄:" [ -d "/Users/accusys/momentry/var/mariadb" ] && echo " ✓ 保留" || echo " ✗ 已刪除" # 7. 日誌目錄 (可選刪除) echo "7. 日誌目錄:" [ -d "/Users/accusys/momentry/log" ] && echo " ✓ 保留" || echo " ✗ 已刪除" ``` **預期結果**: ``` === MariaDB 卸載後檢查 === 1. MariaDB 進程: ✓ 已停止 2. Port 3306: ✓ 已釋放 3. mariadb 命令: ✓ 已移除 4. brew 安裝: ✓ 已移除 5. launchctl 服務: ✓ 已移除 6. 數據目錄: ✓ 保留 (或 ✗ 已刪除) 7. 日誌目錄: ✓ 保留 (或 ✗ 已刪除) ``` --- ## 手動檢查命令 ```bash # 1. 檢查進程 ps aux | grep mariadb | grep -v grep # 2. 檢查 Port lsof -i :3306 # 3. 測試連線 mariadb -u root -e "SELECT 1;" # 4. 查看所有數據庫 mariadb -u root -e "SHOW DATABASES;" # 5. 查看用戶 mariadb -u root -e "SELECT User, Host FROM mysql.user;" # 6. 查看表 mariadb -u root -e "USE mysql; SHOW TABLES;" # 7. 查看日誌 tail -20 /Users/accusys/momentry/log/mariadb.log ``` --- ## 連線資訊 | 項目 | 值 | |------|-----| | Host | localhost | | Port | 3306 | | User | root | --- ## 環境變數 在 `.env` 中: ```env MARIADB_URL=mariadb://root@localhost:3306 ``` --- ## 遠端訪問 - MariaDB 綁定到所有網路介面 (0.0.0.0) - 本地網路其他機器可透過 IP 訪問 - 請設定用戶權限限制訪問 --- ## 故障排除 ### MariaDB 無法啟動 ```bash # 檢查日誌 tail -f /Users/accusys/momentry/log/mariadb.log # 檢查目錄權限 ls -la /Users/accusys/momentry/var/mariadb/ # 重新設定權限 chown -R $(whoami):staff /Users/accusys/momentry/var/mariadb ``` ### Port 被佔用 ```bash # 檢查哪個程序佔用 port 3306 lsof -i :3306 # 終止佔用程序 kill ``` ### 需要重新載入 plist ```bash # 卸載舊服務 (如果存在) sudo launchctl unload /Library/LaunchDaemons/com.momentry.mariadb.plist 2>/dev/null # 載入新服務 sudo launchctl load /Library/LaunchDaemons/com.momentry.mariadb.plist ``` --- ## 檔案位置 | 類型 | 路徑 | 說明 | |------|------|------| | 安裝 | `/opt/homebrew/opt/mariadb/` | MariaDB 安裝目錄 | | 執行檔 | `/opt/homebrew/opt/mariadb/bin/mariadbd` | MariaDB 執行檔 | | 數據目錄 | `/Users/accusys/momentry/var/mariadb/` | 數據儲存 | | 日誌 | `/Users/accusys/momentry/log/mariadb.log` | 執行日誌 | | 錯誤日誌 | `/Users/accusys/momentry/log/mariadb.error.log` | 錯誤日誌 | | plist | `/Library/LaunchDaemons/com.momentry.mariadb.plist` | 開機啟動 | | 備份 | `/Users/accusys/momentry/var/mariadb_backup/` | 數據備份 | --- ## 備份與恢復 ### 備份用戶配置 已創建專用備份用戶: - 用戶名:`momentry_backup` - 密碼:`momentry_backup_pwd_2026` - 權限:SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER ### 備份 (mysqldump) ```bash # 備份所有數據庫 TIMESTAMP=$(date +%Y%m%d_%H%M%S) mysqldump -u momentry_backup -pmomentry_backup_pwd_2026 --all-databases | gzip > \ /Users/accusys/momentry/backup/daily/mariadb/mariadb_db_all_${TIMESTAMP}.sql.gz # 備份指定數據庫 (WordPress) mysqldump -u momentry_backup -pmomentry_backup_pwd_2026 wordpress | gzip > \ /Users/accusys/momentry/backup/daily/mariadb/mariadb_db_wordpress_${TIMESTAMP}.sql.gz # 驗證 sha256sum /Users/accusys/momentry/backup/daily/mariadb/mariadb_db_*.sql.gz > \ /Users/accusys/momentry/backup/daily/mariadb/mariadb_db_${TIMESTAMP}.sha256 ``` ### 恢復 (mysql) ```bash # 恢復所有數據庫 gunzip < /Users/accusys/momentry/backup/daily/mariadb/mariadb_db_all_20260316_101802.sql.gz | \ mysql -u momentry_backup -pmomentry_backup_pwd_2026 # 恢復指定數據庫 gunzip < /Users/accusys/momentry/backup/daily/mariadb/mariadb_db_wordpress_20260316_101802.sql.gz | \ mysql -u momentry_backup -pmomentry_backup_pwd_2026 wordpress ``` ### 數據目錄複製 (完整遷移) - 離線 ```bash # 1. 停止 MariaDB mysqladmin -u momentry_backup -pmomentry_backup_pwd_2026 shutdown # 2. 複製數據目錄 cp -r /opt/homebrew/var/mysql/* /Users/accusys/momentry/var/mariadb/ # 3. 設定權限 chown -R $(whoami):staff /Users/accusys/momentry/var/mariadb # 4. 啟動 MariaDB sudo launchctl load /Library/LaunchDaemons/com.momentry.mariadb.plist ``` --- ## 版本資訊 - 版本: 12.1.2 - Port: 3306 - User: root - 數據目錄: /Users/accusys/momentry/var/mariadb/ - 日誌目錄: /Users/accusys/momentry/log/