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

Linux 源碼編譯安裝 MySQL 5.7.13 完整實戰記錄

     編輯:MySQL 綜合教學

Linux 源碼編譯安裝 MySQL 5.7.13 完整實戰記錄

CentOS 7 環境下從源碼編譯安裝 MySQL 5.7.13,記錄 cmake 依賴解決、Boost 處理、ncurses 缺失等實際遇到的坑與解法。

環境準備

# 系統:CentOS 7.x
# 依賴包
yum -y install gcc gcc-c++ cmake ncurses-devel bison perl-Data-Dumper
# 或手動編譯 cmake 3.6+、bison 3.0+

源碼獲取

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.13.tar.gz
tar -zxvf mysql-5.7.13.tar.gz
cd mysql-5.7.13

CMake 配置(關鍵步驟)

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DDEFAULT_CHARSET=gbk \
-DDEFAULT_COLLATION=gbk_chinese_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/data/mysqldb \
-DMYSQL_TCP_PORT=3306 \
-DENABLE_DOWNLOADS=1 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost

⚠️ 兩大常見編譯錯誤與解決

1. Boost 缺失


CMake Error at cmake/boost.cmake:81 (MESSAGE):
You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=

解決:CMake 參數加 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost,自動下載編譯。

2. ncurses-devel 缺失


Curses library not found. Please install appropriate package...
On Redhat and derivates it is ncurses-devel.

解決:

yum -y install ncurses-devel
rm CMakeCache.txt  # 必須刪除緩存重新配置
cmake ...(上述參數)

編譯安裝


make -j$(nproc)   # 並行編譯,依 CPU 核心數
make install

編譯耗時 20-60 分鐘視機器效能而定。

安裝後配置


# 建立 mysql 使用者群組
groupadd mysql
useradd -r -g mysql -s /bin/false mysql

# 建立資料目錄
mkdir -p /data/mysqldb
chown -R mysql:mysql /data/mysqldb
chown -R mysql:mysql /usr/local/mysql

# 初始化資料庫(5.7 語法)
cd /usr/local/mysql
bin/mysqld --initialize --user=mysql --datadir=/data/mysqldb --basedir=/usr/local/mysql

# 複製啟動腳本
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on

# 配置檔
cp support-files/my-default.cnf /etc/my.cnf
# 編輯 /etc/my.cnf 設定 basedir、datadir、port、server_id 等

# 啟動
service mysqld start

密碼處理

初始化輸出的隨機密碼在錯誤日誌中:


cat /data/mysqldb/*.err | grep 'temporary password'

首次登入修改:


/usr/local/mysql/bin/mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123!';

環境變數


echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
source /etc/profile

防火牆開放 3306


firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
# 或 iptables
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
service iptables save

遠程存取授權


GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'NewStrongPass123!' WITH GRANT OPTION;
FLUSH PRIVILEGES;

驗證安裝


mysql -V
mysql -u root -p -e "SELECT VERSION(); SHOW VARIABLES LIKE 'char%';"

關鍵參數建議(/etc/my.cnf)


[mysqld]
basedir = /usr/local/mysql
datadir = /data/mysqldb
port = 3306
server_id = 1
character_set_server = utf8mb4
innodb_buffer_pool_size = 4G
innodb_log_file_size = 1G
innodb_flush_method = O_DIRECT
sync_binlog = 1
binlog_format = row
gtid_mode = on
enforce_gtid_consistency = 1

源碼編譯安裝雖耗時,但可深度定製功能模組、優化編譯選項、掌握完整依賴鏈,適合對效能與穩定性有極致要求的環境。

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