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

Linux 源碼編譯安裝 MySQL 5.5 完全指南:CMake 參數詳解、目錄佈局、系統服務註冊

     編輯:MySQL 綜合教學

Linux 源碼編譯安裝 MySQL 5.5 完全指南:CMake 參數詳解、目錄佈局、系統服務註冊

源碼編譯安裝能精準控制特性裁剪、安裝路徑、編譯優化,是定制化部署的首選。本文以 MySQL 5.5.47 為例,覆蓋依賴準備、CMake 關鍵參數、編譯安裝、數據初始化、系統服務註冊、密碼設置全流程,Ubuntu/CentOS 雙平台通用。

前置依賴

套件Ubuntu/DebianCentOS/RHEL用途
CMakeapt-get install cmakeyum -y install cmake (或 cmake3)構建系統
ncursesapt-get install libncurses5-devyum -y install ncurses-devel終端交互庫
開發工具鏈apt-get install build-essentialyum -y groupinstall "Development Tools"gcc/g++/make

用戶與目錄佈局


# 1. 用戶
groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql

# 2. 目錄(遵循 FHS,分離程序與數據)
mkdir -p /usr/local/mysql/data
chown -R mysql:mysql /usr/local/mysql

CMake 關鍵參數全解析


cd mysql-5.5.47
mkdir build && cd build

cmake .. \
  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
  -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
  -DDEFAULT_CHARSET=utf8 \
  -DDEFAULT_COLLATION=utf8_general_ci \
  -DWITH_EXTRA_CHARSETS=all \
  -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  -DWITH_READLINE=1 \
  -DENABLED_LOCAL_INFILE=1 \
  -DMYSQL_DATADIR=/usr/local/mysql/data \
  -DMYSQL_TCP_PORT=3306 \
  -DWITH_SSL=system \
  -DWITH_ZLIB=system \
  -DCMAKE_BUILD_TYPE=RelWithDebInfo \
  -DCMAKE_C_FLAGS="-O2 -fPIC" \
  -DCMAKE_CXX_FLAGS="-O2 -fPIC"

參數分類說明

類別參數建議值/說明
安裝路徑CMAKE_INSTALL_PREFIX/usr/local/mysql (程序文件)
MYSQL_DATADIR/usr/local/mysql/data (數據文件)
MYSQL_UNIX_ADDR/usr/local/mysql/mysql.sock
字符集DEFAULT_CHARSETutf8 (5.5 不支持 utf8mb4,升級 5.7+ 才有)
DEFAULT_COLLATIONutf8_general_ci
WITH_EXTRA_CHARSETSall 或 utf8,gbk
存儲引擎WITH_INNOBASE_STORAGE_ENGINE1 (啟用 InnoDB,5.5 默認已內建)
WITH_PARTITION_STORAGE_ENGINE1 (啟用分區表)
性能優化CMAKE_BUILD_TYPERelWithDebInfo (Release + 調試符號)
系統集成WITH_SSL/WITH_ZLIBsystem (使用系統庫,減小體積)

編譯與安裝


# 並行編譯(核心數 +1)
make -j$(($(nproc)+1)) && make install

# 安裝後權限修正
chown -R mysql:mysql /usr/local/mysql

數據初始化與服務註冊


# 1. 複製配置模板
cp support-files/my-medium.cnf /etc/my.cnf
# 編輯 /etc/my.cnf 確認 basedir/datadir/socket/pid-file/log-error 指向正確路徑

# 2. 初始化系統表(5.5 專用腳本)
chmod 755 scripts/mysql_install_db
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

# 3. 註冊系統服務
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld

# 4. 啟動
service mysqld start

# 5. 設置 root 密碼
/usr/local/mysql/bin/mysqladmin -u root password 'StrongP@ssw0rd!'

驗證與排查


# 版本確認
/usr/local/mysql/bin/mysql -V

# 連接測試
/usr/local/mysql/bin/mysql -uroot -p'StrongP@ssw0rd!' -e "SELECT VERSION(), CURRENT_USER();"

# 進程與端口
ps -ef | grep mysqld
netstat -antp | grep 3306

# 常見報錯
# [ERROR] Can't start server: Bind on unix socket: Permission denied
# -> chown mysql:mysql /usr/local/mysql/ (含 socket 目錄)
# [ERROR] Fatal error: Can't open and lock privilege tables
# -> datadir 路徑錯誤或權限問題,檢查 my.cnf datadir

避坑清單

  1. build 目錄隔離源碼與產物,便於 make clean 重編
  2. 5.5 不支持 utf8mb4,需 5.7+;若業務含 Emoji,請直接編譯 5.7/8.0
  3. mysql_install_db 必須指定 --basedir --datadir,否則默認路徑不匹配
  4. SELinux 環境需 semanage fcontext -a -t mysqld_db_t "/usr/local/mysql/data(/.*)?" + restorecon -Rv
  5. 開機自啟:chkconfig --add mysqld && chkconfig mysqld on (CentOS 6) / systemctl enable mysqld (CentOS 7)

源碼編譯安裝是理解 MySQL 內核依賴、特性裁剪、性能優化的最佳實踐場。建議將 CMake 參數、目錄佈局、初始化腳本封裝為 Ansible Role,實現「一鍵交付、版本可控、審計可追」。

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