首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 5.1 於 RHEL 5 編譯安裝錯誤排查:plugin 與 federated 引擎問題

     編輯:MySQL 綜合教學

問題背景

客戶需求:MySQL 5.1.32 預設字元集為 GBK。官方二進位套件預設為 latin1,嘗試 FreeBSD 相關教學無效,決定下載原始碼 mysql-5.1.32.tar.gz 手動編譯安裝至 /usr/local/mysql5,配置參數:

./configure --prefix=/usr/local/mysql5 \
--with-charset=gbk --with-xcharset=all \
--with-plugins=federated ...

啟動報錯分析

/usr/local/mysql5/libexec/mysqld: Table 'mysql.plugin' doesn't exist
[ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
[ERROR] unknown option '--skip-federated'
[ERROR] Aborting

錯誤一:mysql.plugin 表不存在

原因:MySQL 5.1 引入插件架構,需 mysql.plugin 表儲存插件資訊。全新安裝或升級後,必須執行 mysql_upgrade 建立系統表。

解決:

/usr/local/mysql5/bin/mysql_upgrade -u root -p --force

此指令會檢查並建立所有系統表(含 plugin、proc、event 等),並刷新權限表。

錯誤二:unknown option '--skip-federated'

原因:MySQL 5.1 移除內建 federated 引擎,改為插件式載入。舊版 my.cnf 保留 skip-federated 參數導致啟動失敗。

解決方案:

  1. 修改 my.cnf:註解或刪除 skip-federated 行
  2. 若需 Federated 引擎:編譯時加入 --with-plugins=federated,並在 my.cnf 加入 federated(非 skip-federated)啟用插件

正確 my.cnf 片段:

[mysqld]
# skip-federated   <-- 註解掉或刪除
federated          <-- 若編譯含此插件,加入此行啟用
plugin_dir=/usr/local/mysql5/lib/mysql/plugin

完整編譯安裝檢查清單

步驟指令/操作關鍵點
1. 安裝依賴yum install gcc gcc-c++ ncurses-devel openssl-devel bison perlRHEL 5 需確認開發工具包
2. 建立使用者groupadd mysql; useradd -g mysql -s /sbin/nologin mysql專用帳號,安全原則
3. 配置編譯./configure --prefix=/usr/local/mysql5 --with-charset=gbk --with-xcharset=all --with-plugins=max --with-big-tables ...plugins=max 包含常用插件
4. 編譯安裝make && make install耗時較久,建議 screen 執行
5. 初始化資料目錄scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql5 --datadir=/data/mysql指定資料目錄分離
6. 複製設定檔cp support-files/my-medium.cnf /etc/my.cnf根據記憶體調整參數
7. 設定啟動腳本cp support-files/mysql.server /etc/init.d/mysqld; chkconfig --add mysqld系統服務管理
8. 啟動並升級service mysqld start; mysql_upgrade -u root -p必須執行 upgrade
9. 設定密碼mysqladmin -u root password 'newpwd'移除匿名帳號

RHEL 5 特殊注意事項

  • glibc 版本:RHEL 5 的 glibc 2.5 較舊,MySQL 5.1 為最後支援版本,5.5+ 需 glibc 2.7+
  • 開啟檔案限制:/etc/security/limits.conf 加入 mysql soft nofile 65535; mysql hard nofile 65535
  • SELinux:若啟用需設定 setsebool -P mysql_connect_any=1 或調整資料目錄 context
  • 防火牆:開放 3306 埠 iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

驗證安裝成功

# 檢查版本與字元集
/usr/local/mysql5/bin/mysql -u root -p -e "SELECT VERSION(); SHOW VARIABLES LIKE 'character_set%';"

# 檢查插件
/usr/local/mysql5/bin/mysql -u root -p -e "SHOW PLUGINS;"

# 檢查 federated
/usr/local/mysql5/bin/mysql -u root -p -e "SHOW ENGINES;" | grep -i federated

編譯安裝雖耗時,但可精確控制功能模組、字元集與最佳化參數,適合有特殊需求的生產環境。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved