1.清理环境

[root@lnmp src]# rpm -ql | grep mari*

如果有的话就卸载

MySQL所需依赖如下

cmake

make(推荐3.75以上)

编译器(GCC5.3+或Clang4.0+或XCode9+或Developer Studio12.6+或Visual Studio2017)

SSL库(默认使用系统的OpenSSL)

Boost C++库,需要用来构建但不需要使用,无需安装,源码即可

ncurses库

bison2.1+

git

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

2.安装编译MySQL的工具cmake

解压源码包

tar -zxvf cmake-3.17.4.tar.gz

进入解压的目录

./configure --prefix=/usr/local/cmake

Error when bootstrapping CMake:

Cannot find a C++ compiler that supports both C++11 and the specified C++ flags.

Please specify one using environment variable CXX.

The C++ flags are "".

They can be changed using the environment variable CXXFLAGS.

See cmake_bootstrap.log for compilers attempted.

作者这里遇到问题,是因为没有gcc等等依赖,安装一下就好了

yum -y install gcc-c++ gcc

在编译过程中又出现如下错误,并且给了解决方案 在编译的时候加上如下参数就好了

问题千千万,大部分问题都可以在他的报错找到解决办法

-- Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR)

CMake Error at Utilities/cmcurl/CMakeLists.txt:454 (message):

Could not find OpenSSL. Install an OpenSSL development package or

configure CMake with -DCMAKE_USE_OPENSSL=OFF to build without OpenSSL.

那么如何设置这个变量呢,作者根据cmake的语法,就在顶层CMakeLists.txt文件的开头加入

set(CMAKE_USE_OPENSSL OFF)这个就是设置变量的语法,然后再尝试执行编译命令

CMake has bootstrapped. Now run gmake.果然成功了

./configure成功之后

make

make install

由于俺是个初学者喜欢钻研,采用编译方式

您可以试试直接yum安装0.0

3.进入MySQL源码目录

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
-- Configuring done
-- Generating done

预编译完成

make

安装之前不要忘了先创建MySQL用户和用户组

make install

安装完成后将命令查找路径加入MySQL的bin目录,之后将所有MySQL的文件,更改为MySQL用户组和用户

groupadd mysql

useradd -g mysql mysql

修改/usr/local/mysql权限

chown -R mysql:mysql /usr/local/mysql

初始化配置

进入安装路径, 执行初始化配置脚本,创建系统自带的数据库和表:

cd /usr/local/mysql

scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

如果安装失败,若出现FATAL ERROR: please install the following Perl modules before executing scripts/mysql_install_db:

Data::Dumper

解决如下:

yum install 'perl(Data::Dumper)'

MySQL编译完成,注意:在CentOS 6.4及以后版本操作系统的最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动。在使用"yum update"更新系统后,需要检查下/etc目录下是否会多出一个my.cnf,如果多出,将它重命名成别的。否则,MySQL将使用这个配置文件启动,可能造成无法正常启动等问题。

一切完成之后,将mysql设置开机启动

[root@lnmp mysql]# cp support-files/mysql.server /etc/init.d/mysql

[root@lnmp mysql]# chkconfig mysql on

[root@lnmp mysql]# service mysql start

搞定