官方最新的mysql版本是mysql5.7.18。那么在centOS下,怎么编译安装呢。安下边步骤一步一步的来。

1,找到源码地址,并下载,解压。 https://dev.mysql.com/downloads/mysql/

在大多数情况下,你只需要安装MySQL-server和MySQL-client安装包就可以安装上一个标准功能的MySQL。对于一个标准安装来说,其他的安装包不是必需的。这里选择下载RPM Bundle包,它包含mysql的所有功能(server,client,test)。确定要下载的版本后,需要登录才能出最后的下载按钮。

   # 先建立一个mysql的文件夹。(喜欢将下载包放在alidata/source/下)
   mkdir /alidata/source/mysql
   wget https://cdn.mysql.com//Downloads/MySQL-5.7/
        mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar
   tar xvf mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar 

2,安装包既然下载下来了,就可以开始准备着了。首页要先卸载旧的版本以及有冲突的包(mariadb)。

   #找到mysql相关的包。然后进行卸载
   rpm -qa|grep mysql
   rpm -e --nodeps mysql-community-client-5.7.8-1.el6.x86_64
   rpm -e --nodeps mysql-community-common-5.7.8-1.el6.x86_64
   rpm -qa|grep mariadb
   rpm -e --nodeps mariadb-libs-5.5.41-2.el7_0.x86_64

3,检查和创建mysql用户组。

   #检查组中是否有mysql组
   grep mysql /etc/group
   #查询系统中是否有mysql这个用户,没有则添加。
   grep mysql /etc/passwd
   #如果上边没有,就创建一个。创建mysql组,账户,设置mysql不能登录(防止别人利用mysql账号登录主机)
   groupadd mysql 
   useradd -g mysql mysql
   usermod -s / bin / false mysql

4,开始安装。解压出来后,有12个文件。并不是所有文件都是需要的。理论上,只要安装mysql-community-server-5.7.18-1.el7.x86_64.rpm和mysql-community-client-5.7.18-1.el7.x86_64.rpm就可以了。但是他们有依赖其他包。所有,需要安装的包是这样的。

安装顺序:
mysql-community-common-5.7.18-1.el7.x86_64.rpm
mysql-community-libs-5.7.18-1.el7.x86_64.rpm(依赖于common)
mysql-community-client-5.7.18-1.el7.x86_64.rpm(依赖于libs)
mysql-community-server-5.7.18-1.el7.x86_64.rpm(依赖于common,client)
mysql-community-devel-5.7.18-1.el7.x86_64.rpm(MySQL头文件和库文件)

   #安装
   rpm -ivh mysql-community-common-5.7.18-1.el7.x86_64.rpm
   rpm -ivh mysql-community-libs-5.7.18-1.el7.x86_64.rpm
   rpm -ivh mysql-community-client-5.7.18-1.el7.x86_64.rpm
   rpm -ivh mysql-community-server-5.7.18-1.el7.x86_64.rpm
   rpm -ivh mysql-community-devel-5.7.18-1.el7.x86_64.rpm

安装会出警告。不管它。如果有报错,就要管了。比如和mariadb冲突,就要先安装mariadb。比如少了perl。yum install perl。安装一下。少了numactl也安装一下。一直到这5个包完全安装完。

5,初始化。不管在哪个平台上,使用–initialize选项就是以“默认安全模式”来进行安装的(即包含一个随机的root初始密码的生成)。在这种情况下,密码是被标志为过期的,你需要选择一个新的密码。使用–initialize-insecure选项,没有root密码生成;如果是这样的话,在服务器投入生产使用之前,你需要及时地为账户指定密码。

    #初始化
    mysqld --initialize  或 mysqld --initialize-insecure
    #如果之前,没有创建mysql组。请用下边的命令执行。
    mysqld --initialize --user=mysql 或 
    mysqld --initialize-insecure --user=mysql

参考:
http://blog.csdn.net/peng314899581/article/details/70241976
http://blog.csdn.net/lyelyelye/article/details/53944720
https://jingyan.baidu.com/album/93f9803f010d8fe0e56f555e.html?picindex=2
安装好后,小小配置:
http://www.centoscn.com/mysql/2016/0626/7537.html

如果上边的方法不好使。可以使用下边的方法。
参考地址:
http://tnkliu.com/server/nginx-mysql-php.html
http://blog.csdn.net/cryhelyxx/article/details/47610247
https://www.yunweijilu.com/index.php/Home/Index/article/aid/135

1,直接命令。

wget http://dev.mysql.com/get/Downloads/
     MySQL-5.7/mysql-5.7.18.tar.gz
groupadd mysql
useradd -g mysql mysql
tar zxvf mysql-5.7.13.tar.gz

cmake -DCMAKE_INSTALL_PREFIX=/data/server/mysql 
-DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/data/
server/mysql/etc -DWITH_EXTRA_CHARSETS=all 
-DWITH_SSL=bundled -DWITH_EMBEDDED_SERVER=1 
-DWITH_PARTITION=1 -DWITH_INNOBASE=1 -DWITH_MYISAMMRG=1 
-DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci 
-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/src
make
make install

如果因为下载boost_1_59 超时,请手动下载。文件放在/usr/local/src下。

wget http://sourceforge.net/projects/boost/
     files/boost/1.59.0/boost_1_59_0.tar.gz 
mv -rf boost_1_59_0.tar.gz  /usr/local/src

再进行上边的步骤。会有成功的。

2,上边处理完毕之后,进行安装。整个过程会很漫长漫长。

   make && make install

3,上边这一步并不太平。也许会报下边这样的错误。

   c++: Internal error: Killed (program cc1plus)
   Please submit a full bug report.
   See  for instructions.
   make[2]: *** [sql/CMakeFiles/sql.dir/item_geofunc.cc.o] Error 1
   make[1]: *** [sql/CMakeFiles/sql.dir/all] Error 2
   make: *** [all] Error 2

他们说,不要大惊小怪。这个是内存不足引起的。既然问题出现了,那么解决问题的办法也会有的。
请参考:https://www.yunweijilu.com/index.php/Home/Index/article/aid/135
上边编译出错,再编译时需要删除CMakeCache.txt文件。

    make clean 
    rm -f CMakeCache.txt

接着上边的问题来。内存不足,就设置2G交换分区来用下。

# --获取要增加的2G的SWAP文件块
   dd if=/dev/zero of=/swapfile bs=1k count=2048000 
# -- 创建SWAP文件
   mkswap /swapfile  
# -- 激活SWAP文件   
   swapon /swapfile    
# -- 查看SWAP信息是否正确 
   swapon -s     
# -- 添加到fstab文件中让系统引导时自动启动       
   echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab

然后,接着。

   make && make install

注意, swapfile文件的路径在/var/下
编译完后, 如果不想要交换分区了, 可以删除:

   swapoff /swapfile
   rm -fr /swapfile

继续参考:http://blog.csdn.net/zoojingoo/article/details/50926327

http://www.smalljacky.com/linux/centos/centos7-install-setup-nginx-mariadb-php-phpmyadmin-lemp/

现在好多人在弃用mysql,而用mariadb了。