零起步2-CentOS7.6源码编译安装mysql-8.0.15

  • Post author:
  • Post category:mysql



全新以最小化包安装了64位的CentOS7.6系统,作为本地的Web服务器使用,现记录全过程


第二步,安装mysql8数据库v8.0.15,无法用yum源安装的相关依赖有cmake-3.14.5、gcc6.3



※ 知悉


源码安装mysql,其中两个版本对编译环境有要求


1.


mysql从5.5版本开始,不再使用./configure编译,而是使用cmake编译器。


2.


mysql从8.0.16版本开始,要求cmake的版本是cmake3以上


3.


centos7.6默认安装的是cmake


2.8.12.2和


gcc4.8.5,这是为考虑向下兼容centos6.2及稳定性,但对编辑安装mysql8.0.16会形成阻碍,所以安装前建议升级cmake到cmake3以上(最新为3.14),并以


scl软件集(Software Collections)的方式临时切换为高版本的gcc6.3完成mysql编辑(本文会分别讲述此两项)


4.

务必记得先删除mariadb相关内容,尤其要


删除/etc/my.cnf文件


,mysql启动时会默认加载该配置文件,导致在安装参数里的设置无效,会默认加载原系统自带的mariadb目录,然后引发一系列的错误


5. 请仔细查看mysql的cmake预编译参数以及正确正确的mysql源码包,很多同学在这里乱来


mysql8.0官方编译参数:


https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options.html


mysql-8.0.15


.tar.gz源码包下载地址:


https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.15.tar.gz




准备工作1


,安装wget,用wget下载相应安装包,卸载centos自带的


mariadb

[root@localhost ~]# yum remove mariadb
[root@localhost ~]# yum install -y wget
[root@localhost ~]# wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5.tar.gz
[root@localhost ~]# wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.15.tar.gz




准备工作2


:安装基本依赖包,先用yum安装cmake





automake 、autoconf ,另


MySQL 8.x需要最少安装的包有:bison,gcc、gcc-c++





ncurses-devel、


openssl-devel

[root@localhost ~]# yum install cmake make -y
[root@localhost ~]# yum install gcc gcc-c++ autoconf bison automake \
openssl openssl-devel zlib* fiex* libxml* \
ncurses-devel libmcrypt* libtool-ltdl-devel* -y




准备工作3





安装环境要求:gcc5.3及以上版本,cmake3.75以上版本(本文用gcc6.3和cmake3.14)


官方文档说明及截图如下


https://dev.mysql.com/doc/refman/8.0/en/source-installation.html


查看当前 gcc 版本,显示yum默认安装的是


gcc4.8.5,由于旧版本gcc对各种c语言特性不支持

[root@localhost ~]# gcc -v
使用内建 specs。
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
目标:x86_64-redhat-linux
配置为:../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
线程模型:posix
gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)


安装gcc6.3,这里介绍使用


scl软件集(Software Collections)实现多个gcc版本之间的灵活切换


1. 安装scl源

[root@localhost ~]# yum install centos-release-scl -y


2.


列出scl有哪些源可以用,下面只截图部分版本

[root@localhost ~]# yum list|grep gcc
devtoolset-3-gcc.x86_64                   4.9.2-6.el7           centos-sclo-rh  
devtoolset-3-gcc-c++.x86_64               4.9.2-6.el7           centos-sclo-rh  
devtoolset-3-gcc-gfortran.x86_64          4.9.2-6.el7           centos-sclo-rh  
devtoolset-3-gcc-plugin-devel.x86_64      4.9.2-6.el7           centos-sclo-rh  
devtoolset-4-gcc.x86_64                   5.3.1-6.1.el7         centos-sclo-rh  
devtoolset-4-gcc-c++.x86_64               5.3.1-6.1.el7         centos-sclo-rh  
devtoolset-4-gcc-gdb-plugin.x86_64        5.3.1-6.1.el7         centos-sclo-rh  
devtoolset-4-gcc-gfortran.x86_64          5.3.1-6.1.el7         centos-sclo-rh  
devtoolset-4-gcc-plugin-devel.x86_64      5.3.1-6.1.el7         centos-sclo-rh  
devtoolset-4-libgccjit.x86_64             5.3.1-6.1.el7         centos-sclo-rh  
devtoolset-4-libgccjit-devel.x86_64       5.3.1-6.1.el7         centos-sclo-rh  
devtoolset-4-libgccjit-docs.x86_64        5.3.1-6.1.el7         centos-sclo-rh  
devtoolset-7-gcc.x86_64                   7.3.1-5.15.el7        centos-sclo-rh  
devtoolset-7-gcc-c++.x86_64               7.3.1-5.15.el7        centos-sclo-rh  
devtoolset-7-gcc-gdb-plugin.x86_64        7.3.1-5.15.el7        centos-sclo-rh  
devtoolset-7-gcc-gfortran.x86_64          7.3.1-5.15.el7        centos-sclo-rh  
devtoolset-7-gcc-plugin-devel.x86_64      7.3.1-5.15.el7        centos-sclo-rh  
devtoolset-7-libgccjit.x86_64             7.3.1-5.15.el7        centos-sclo-rh  
devtoolset-7-libgccjit-devel.x86_64       7.3.1-5.15.el7        centos-sclo-rh  
devtoolset-7-libgccjit-docs.x86_64        7.3.1-5.15.el7        centos-sclo-rh  
devtoolset-8-gcc.x86_64                   8.2.1-3.el7           centos-sclo-rh  
devtoolset-8-gcc-c++.x86_64               8.2.1-3.el7           centos-sclo-rh  
devtoolset-8-gcc-gdb-plugin.x86_64        8.2.1-3.el7           centos-sclo-rh  
devtoolset-8-gcc-gfortran.x86_64          8.2.1-3.el7           centos-sclo-rh  
devtoolset-8-gcc-plugin-devel.x86_64      8.2.1-3.el7           centos-sclo-rh  
devtoolset-8-libgccjit.x86_64             8.2.1-3.el7           centos-sclo-rh  
devtoolset-8-libgccjit-devel.x86_64       8.2.1-3.el7           centos-sclo-rh  
devtoolset-8-libgccjit-docs.x86_64        8.2.1-3.el7           centos-sclo-rh 


3.


安装5.3版本的gcc、gcc-c++、gdb,当前


CentOS7支持3,4,6,7,8五个版本,分别对应GCC4.9,GCC5.3,GCC6.3


,GCC7.3,


,GCC8.2


,用户可以根据自己的需要选择安装哪一个版本,本文安装GCC8.2

[root@localhost ~]# yum install devtoolset-8-gcc* -y


4.临时切换gcc为新版本有两个命令(


source /opt/rh/devtoolset-8/enable





scl enable devtoolset-8 bash)

[root@localhost ~]# source /opt/rh/devtoolset-8/enable

[root@localhost ~]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/opt/rh/devtoolset-8/root/usr/libexec/gcc/x86_64-redhat-linux/8/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,lto --prefix=/opt/rh/devtoolset-8/root/usr --mandir=/opt/rh/devtoolset-8/root/usr/share/man --infodir=/opt/rh/devtoolset-8/root/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --with-default-libstdcxx-abi=gcc4-compatible --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-8.2.1-20180905/obj-x86_64-redhat-linux/isl-install --disable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 8.2.1 20180905 (Red Hat 8.2.1-3) (GCC) 


至此,gcc已显示为6.3版本,


若要在启动的时候就生效,可以放置到~/.bashrc之中即可




只要make编译通不过,请检查当前的gcc版本(命令:gcc -v),版本要求5.3以上






(






※ 非常重要)




准备工作4

:升级cmake2为cmake3以上


yum默认安装2.8.12.2,编译


mysql8.0.16会提示以下错误



-- Running cmake version 2.8.12.2
CMake Warning at CMakeLists.txt:43 (MESSAGE):
  Please use cmake3 rather than cmake on this platform
-- Please install cmake3 (yum install cmake3)
CMake Error at CMakeLists.txt:55 (CMAKE_MINIMUM_REQUIRED):
  CMake 3.4.3 or higher is required.  You are running version 2.8.12.2
-- Configuring incomplete, errors occurred!


更新cmake,先用yum移除原cmake

[root@localhost ~]# yum -remove cmake -y
[root@localhost ~]# tar zxvf cmake-3.14.5.tar.gz
[root@localhost ~]# cd cmake-3.14.5
[root@localhost cmake-3.14.5]# ./bootstrap
[root@localhost cmake-3.14.5]# gmake && gmake install
[root@localhost cmake-3.14.5]# /usr/local/bin/cmake  --version
cmake version 3.14.5


CMake suite maintained and supported by Kitware (kitware.com/cmake).


显示的版本号为


cmake version 3.14.5,再建立软连接[cmake更新完毕]

[root@localhost cmake-3.14.5]# ln -s /usr/local/bin/cmake /usr/bin/


下面开始正式进入mysql的安装步骤:


我的mysql目录配置如下:


安装路径:/usr/local/mysql


数据库路径:/data/mysql


源码包存放位置:


/root/

[root@localhost ~]# tar zxvf mysql-8.0.15.tar.gz
[root@localhost ~]# mkdir /data
[root@localhost ~]# mkdir /data/mysql
[root@localhost ~]# cd mysql-8.0.15
[root@localhost mysql-8.0.15]# mkdir -p build
[root@localhost mysql-8.0.15]# cd build
[root@localhost build]# cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DSYSCONFDIR=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_0900_ai_ci \
-DWITH_SSL=system \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_INNODB_MEMCACHED=ON \
-DENABLED_LOCAL_INFILE=ON \
-DMYSQL_TCP_PORT=3306 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/tmp \
-DMYSQL_DATADIR=/data/mysql

[root@localhost build]# make -j 8  && make install


执行多任务并发编译安装,make -j x(x为任务数)


※ 部分编译参数特别说明


-DDOWNLOAD_BOOST=1


-DWITH_BOOST=/tmp

若mysql编译时未加入上述参数,会报错如下:

报错:CMake Error at cmake/boost.cmake:101 (MESSAGE): You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory>

-DDOWNLOAD_BOOST=1,表示系统会自动下载解压boost,若已下载,请将该参数置0


下面开始正式进入mysql的配置步骤:

1. 创建mysql用户组(查看mysql.mysql的用户及组是否存在,不存在就创建)

[root@localhost ~]# cat /etc/passwd |grep mysql
[root@localhost ~]# groupadd mysql
[root@localhost ~]# useradd mysql -g mysql -s /sbin/nologin
[root@localhost ~]# cat /etc/passwd |grep mysql
mysql:x:1000:1000::/home/mysql:/sbin/nologin

2. 将mysql目录赋予mysql用户的执行权限

[root@localhost ~]# chown mysql.mysql -R /usr/local/mysql
[root@localhost ~]# chown mysql.mysql -R /data/mysql

3. 初始化mysql,会生成root初始化密码,注意保存

[root@localhost ~]# /usr/local/mysql/bin/mysqld --initialize --user=mysql






临时密码:[Server] A temporary password is generated for root@localhost:

G!K+EPYn0=Oe

4. 启动mysql

[root@localhost ~]# /usr/local/mysql/bin/mysqld_safe --user=mysql &

用secureCRT开启新会话,进入数据库(G!K+EPYn0=Oe是刚才生成的临时密码)

[root@localhost ~]# /usr/local/mysql/bin/mysql -uroot -p'G!K+EPYn0=Oe'

# 修改root 密码为 888888

mysql> alter user 'root'@'localhost' identified by "888888";
mysql> show databases;

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

4 rows in set (0.01 sec)

# 添加mysql远程登录账号

mysql> create user root@'%' identified by '888888';
Query OK, 0 rows affected (0.02 sec)

mysql> grant all privileges on *.* to root@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

# 查看目前的帐号,有%的root账号表示远程登录账号配置成功

mysql> select user,host from mysql.user;

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | %         |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
5 rows in set (0.00 sec)

mysql> quit

5. 配置为系统服务并加入开机启动

[root@localhost ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@localhost ~]# chmod 755 /etc/init.d/mysqld
[root@localhost ~]# chkconfig --list|grep mysqld
[root@localhost ~]# chkconfig mysqld on
[root@localhost ~]# chkconfig --list|grep mysqld
mysqld          0:关    1:关    2:开    3:开    4:开    5:开    6:关

mysqld已加入系统服务,设置为开机自启动,至此,mysql安装配置讲解结束!

在防火墙中开启mysql的3306的远程访问,这样就可以使用navicat等工具连上mysql

[root@localhost ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
success
[root@localhost ~]# firewall-cmd --reload
success


附录:


centos7默认的防火墙为firewalld,基本命令如下:

开启3306端口,(–permanent永久生效,没有此参数重启后失效)

[root@localhost ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent   

重新载入,使修改立即生效(每次修改都执行该命令)

[root@localhost ~]# firewall-cmd --reload

查看所有打开的端口

[root@localhost ~]# firewall-cmd --zone=public --list-ports

查看指定的端口是否打开

[root@localhost ~]# firewall-cmd --zone= public --query-port=3306/tcp

删除指定的端口

[root@localhost ~]# firewall-cmd --zone= public --remove-port=3306/tcp --permanent



mysql8.0官方编译参数的


英文文档简单翻译说明一下





https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options.html


The


InnoDB


,


MyISAM


,


MERGE


,


MEMORY


, and


CSV


engines are mandatory (always compiled into the server) and need not be installed explicitly.


(说明:


mysql默认支持的数据库引擎有InnoDB,MyISAM, MERGE, MEMORY, CSV,无需在编译时再声明)


所以上面的编译条件省掉了如下行

-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \



相关错误处理


1.


CMake Error: The source directory “/xxx/mysql-8.0.15” does not appear to contain CMakeLists.txt


解决:


下载的mysql版本有问题。应下载:选择Source Code


2. mysql8源码编译运行CMake,提示Please do not build in-source.  Out-of source builds are highly   recommended,提示不要在源文档中cmake


解决:在源文档中建个子目录来执行cmake即可(本例中建立了build目录),


不在源目录中cmake是良好的习惯。


3


.


CMake Error at cmake/ssl.cmake:68 (MESSAGE): Please install the appropriate openssl developer package


解决:


yum install ncurses-devel 和 yum install openssl-devel



版权声明:本文为yeno原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。