首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

CentOS 7 MySQL 5.7.16 源碼編譯安裝完整教程

     編輯:MySQL 資料庫相關知識

環境準備

  • OS:CentOS 7.x (x86_64)
  • MySQL:5.7.16 (適用 5.7.6+ 通用流程)
  • 目標目錄:/usr/local/mysql,數據目錄:/data/mysql/mysql3306

1. 卸載系統自帶 MariaDB

rpm -qa | grep -i mariadb
# mariadb-libs-5.5.50-1.el7_2.x86_64

# 解決依賴衝突(postfix 依賴 mariadb-libs)
rpm -e mariadb-libs-5.5.50-1.el7_2.x86_64 postfix-2:2.10.1-6.el7.x86_64

2. 安裝編譯依賴

yum install -y cmake make gcc gcc-c++ ncurses-devel openssl-devel bison libaio libaio-devel

3. 創建用戶與目錄結構

groupadd mysql
useradd -s /bin/bash -m -g mysql mysql

# 數據目錄分層設計
mkdir -p /data/mysql/mysql3306/{bin_log,db_file,innodb_log,innodb_ts,log,relay_log,tmpdir,undo_log}
chown -R mysql:mysql /data/mysql/mysql3306

4. Boost 庫處理(兩種方式擇一)

方式一:CMake 內建下載(推薦簡單)

CMake 參數添加 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost

方式二:手動編譯安裝

wget https://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
tar -zxvf boost_1_59_0.tar.gz -C /usr/local
mv /usr/local/boost_1_59_0 /usr/local/boost
cd /usr/local/boost
./bootstrap.sh
./b2 stage threading=multi link=shared
./b2 install threading=multi link=shared

5. CMake 編譯配置

cd /path/to/mysql-5.7.16

cmake \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql/mysql3306/db_file \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DENABLE_DEBUG_SYNC=0 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLED_PROFILING=1 \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql3306/tmpdir/mysql.sock \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_SAFEMALLOC=OFF \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost

6. 編譯安裝(多核加速)

# 使用 2 核並行編譯
make -j2 && make install -j2

# 修改安裝目錄權限
chown -R mysql:mysql /usr/local/mysql

7. 配置文件部署

# 複製配置模板
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

# 編輯核心參數
vim /etc/my.cnf
chown mysql:mysql /etc/my.cnf

my.cnf 核心配置模板

[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql/mysql3306/db_file
socket=/data/mysql/mysql3306/tmpdir/mysql.sock
port=3306
pid_file=/data/mysql/mysql3306/log/mysql.pid
log_error=/data/mysql/mysql3306/log/error.log
slow_query_log_file=/data/mysql/mysql3306/log/slow.log
general_log_file=/data/mysql/mysql3306/log/general.log

# 目錄分離
log_bin_basename=/data/mysql/mysql3306/bin_log/binlog
log_bin_index=/data/mysql/mysql3306/bin_log/binlog.index
innodb_log_group_home_dir=/data/mysql/mysql3306/innodb_log
innodb_data_home_dir=/data/mysql/mysql3306/innodb_ts
innodb_undo_directory=/data/mysql/mysql3306/undo_log
relay_log_basename=/data/mysql/mysql3306/relay_log/relay
relay_log_index=/data/mysql/mysql3306/relay_log/relay.index
tmpdir=/data/mysql/mysql3306/tmpdir

# 性能核心
innodb_buffer_pool_size=2G
innodb_log_file_size=512M
innodb_flush_log_at_trx_commit=1
sync_binlog=1
max_connections=2000
character_set_server=utf8mb4
collation_server=utf8mb4_general_ci
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

8. 初始化數據字典(5.7.6+ 必須)

cd /usr/local/mysql
bin/mysqld --defaults-file=/etc/my.cnf --initialize --basedir=/usr/local/mysql --datadir=/data/mysql/mysql3306/db_file --user=mysql

輸出日誌中包含 root@localhost: 隨機密碼,記錄備用。

9. 環境變量與啟動

# 永久環境變量
echo 'export MYSQL_HOME=/usr/local/mysql' >> /etc/profile
echo 'export PATH=$MYSQL_HOME/bin:$PATH' >> /etc/profile
source /etc/profile

# 啟動服務
mysqld_safe --defaults-file=/etc/my.cnf &

# 驗證進程
ps -ef | grep mysql

10. 首次登錄與密碼修改

# 使用隨機密碼登錄
mysql -u root -p -S /data/mysql/mysql3306/tmpdir/mysql.sock

# 修改密碼(5.7.6+ 語法)
SET PASSWORD = 'NewStrongPass123!';
-- 或
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123!';

11. 關閉服務驗證

mysqladmin shutdown -u root -p -S /data/mysql/mysql3306/tmpdir/mysql.sock

5.7.6+ vs 5.6 關鍵差異速查

項目MySQL 5.6MySQL 5.7.6+
初始化工具mysql_install_dbmysqld --initialize
初始數據庫mysql, information_schema, performance_schema, testmysql, information_schema, performance_schema, sys
初始用戶root@localhost, root@::1, root@hostname, ''@localhost, ''@hostnamemysql.sys, root@localhost
Root 初始密碼空隨機生成(initialize)或無(initialize-insecure)

系統服務註冊(可選)

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved