系统环境
[root@lamp0 ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@lamp0 ~]# uname -r
2.6.32-696.1.1.el6.x86_64
[root@lamp0 ~]# uname -m
x86_64
mysql5.7.18源码包获取
这里下载的是Generic Linux (Architecture Independent), Compressed TAR Archive Includes Boost Headers(mysql-boost-5.7.18.tar.gz),因为mysql5.7以后版本源码编译必须指定boost,如果下载的是mysql-5.7.18.tar.gz,你需要去boost官网下载boost_1_59_0.tar.gz
安装
安装一些依赖包
yum install -y openssl openssl-devel ncurses-devel libaio-devel zlib-devel gcc gcc-c++ bison
这里要注意openssl、zlib应该确保安装上,不然待会编译时会报错,安装前后都应该检查一下
[root@lamp0 ~]# rpm -qa zlib
zlib-1.2.3-29.el6.x86_64
[root@lamp0 ~]# rpm -qa zlib-devel
zlib-devel-1.2.3-29.el6.x86_64
[root@lamp0 ~]# rpm -qa openssl
openssl-1.0.1e-57.el6.x86_64
[root@lamp0 ~]# rpm -qa openssl-devel
openssl-devel-1.0.1e-57.el6.x86_64
安装CMake(跨平台编译器)
https://cmake.org/download/
cmake的重要特性之一是其独立于源码(out-of-source)的编译功能,即编译工作可以在另一个指定的目录中而非源码目录中进行,这可以保证源码目录不受任何一次编译的影响,因此在同一个源码树上可以进行多次不同的编译,如针对于不同平台编译。
# wget https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz
# tar xf cmake-3.5.2.tar.gz
# cd cmake-3.5.2
# yum install -y make gcc gcc-c++ ncurses-devel
# ./bootstrap
# gmake
# gmake install
解压、编译、安装
tar xf mysql-boost-5.7.18.tar.gz
mkdir -p /usr/local/mysql/data
useradd -M mysql -s /sbin/nologin
groupadd mysql
id mysql
chown -R mysql.mysql /usr/local/mysql /usr/local/mysql/data
cd mysql-5.7.18
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DWITH_LIBWRAP=0 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_BOOST=/root/mysql-5.7.18/boost \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
这里cmake如果出现错误,看错误代码,缺少哪个库。就下载哪个库,重新编译前,应该在mysql5.7.18目录下执行以下代码
make clean
rm CMakeCache.txt
如果cmake成功,出现如下代码
-- Build files have been written to: /root/mysql-5.7.18
最后,
make && make install
接着就是漫长的等待(1个半小时左右)