萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

FreeBSD 升級 MySQL Client 兩種實戰方案:Portmaster 遷移與套件重裝

背景

Server 端已為 MySQL 5.1,Client 仍為 5.0,phpMyAdmin 提示版本不匹配。Ports 直接升級因衝突失敗,需先移除舊套件。

方案一:強制移除舊 Client → 重裝新 Client → 重建 PHP 擴展

# 1. 強制刪除舊 client (忽略依賴)
pkg_delete -f mysql-client-5.0.89

# 2. 編譯安裝 5.1 client
cd /usr/ports/databases/mysql51-client
make install clean

# 3. 驗證版本
mysql -V
# mysql Ver 14.14 Distrib 5.1.42, for portbld-freebsd8.0 (amd64)

# 4. 升級依賴的 PHP 擴展
portmaster php5-mysql php5-mysqli

# 5. 重啟 Apache
service apache22 restart

⚠️ 風險:pkg_delete -f 會破壞套件資料庫完整性,PHP 擴展需立即重建,否則網站報錯。

方案二:Portmaster 原地升級 (推薦,保留依賴關係)

# 1. 升級 Client (5.1 → 5.5 範例)
portmaster -o /usr/ports/databases/mysql55-client /usr/ports/databases/mysql51-client
# 過程會自動安裝 cmake 等建構依賴

# 2. 升級 Server (同步版本,需重新指定字元集)
portmaster -o databases/mysql55-server databases/mysql51-server

# 3. 修正權限並初始化
mysql_install_db
chown -R mysql:mysql /var/db/mysql

# 4. 啟動服務
/usr/local/bin/mysqld_safe &

# 5. 升級系統表 (關鍵!)
mysql_upgrade -u root -p

# 6. 修正配置檔
# 將舊 my.cnf 中的 skip-locking 改為 skip-external-locking
# 確認字元集設定 (gbk/gb2312 在新版可能不支援,改 utf8mb4)

方案比較

維度方案一 (暴力重裝)方案二 (Portmaster 升級)
依賴處理手動重建自動追蹤重建
風險中 (套件資料庫不一致)低 (Ports 機制保證)
停機時間較長較短
適用場景極舊版本、Ports 樹已更新無升級路徑常規版本升級、生產環境首選

事後檢查

  • mysql -V 確認 Client/Server 版本一致。
  • SHOW VARIABLES LIKE 'character_set%'; 確認字元集正確。
  • phpMyAdmin 登入無版本警告。
  • 應用端連線測試正常。
copyright © 萬盛學電腦網 all rights reserved