CentOS 7 源码编译MariaDB
下载源码包
安装 SCL devtoolset-7
SCL(Software Collections)可以让你在同一个操作系统上安装和使用多个版本的软件,而不会影响整个系统的安装包。SCL为社区的以下需求而设计:创建和使用软件集合生产系统、概念验证系统、开发测试平台。SCL目前已经支持Fedora和RHEL(衍生版本如CentOS也包含在内)
SCL的创建就是为了给RHEL/CentOS用户提供一种以方便、安全地安装和使用应用程序和运行时环境的多个(而且可能是更新的)版本的方式,同时避免把系统搞乱。与之相对的是第三方源,它们可能会在已安装的包之间引起冲突
某些软件在其上会编译不过,自己编译高版本的 gcc 可能也会遇到一些问题,比较麻烦。但有一个第三方库可以解决这个问题,即 devtoolset
devtoolset 有很多版本,例如 devtoolset-2(gcc-4.8.2)、devtoolset-3(gcc-4.9.2)、devtoolset-4(gcc-5.2.1)。
MariaDB 编译 TokuDB 引擎时会用到 C++11 标准,系统里 GCC 最高版本 4.8.5 是支持 C++11 标准的,可就算指定了 -DCMAKE_CXX_FLAGS=-std=c++11
也不行。手动编译更高版本的 GCC 又太麻烦,这里直接安装了 devtoolset-7,当然你禁用 TokuDB 引擎也无可厚非
[root@sql1 ~]# yum -y install centos-release-scl devtoolset-7 [root@sql1 ~]# gcc --version gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28) Copyright © 2015 Free Software Foundation, Inc. 本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保; 包括没有适销性和某一专用目的下的适用性担保。
[root@sql1 ~]# scl enable devtoolset-7 bash [root@sql1 ~]# gcc --version gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5) Copyright (C) 2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
安装依赖包
# 安装依赖包 [root@sql1 ~]# yum install -y gnutls-devel gcc gcc-c++ cmake ncurses-devel bison-devel bison libaio-devel libevent libxml2-devel # 创建mysql用户和组 [root@sql1 ~]# useradd -M -s /sbin/nologin mysql # 创建数据库数据存放目录 [root@sql1 ~]# mkdir /mydata/mariadb/ -p [root@sql1 ~]# chown -R mysql.mysql /mydata # 解压、编译、安装mariadb [root@sql1 ~]# tar xf tar mariadb-10.3.8.tar.gz -C /usr/src/ [root@sqll ~]# cd /usr/src/mmariadb-10.3.8/ [root@sqll mariadb-10.3.8]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ -DMYSQL_DATADIR=/mydata/mariadb \ -DSYSCONFDIR=/etc \ -DMYSQL_USER=mysql \ -DMYSQL_TCP_PORT=3306 \ -DWITH_XTRADB_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_EXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DEXTRA_CHARSETS=all \ -DWITH_BIG_TABLES=1 \ -DWITH_DEBUG=0 \ && make -j4 && make -j4 install
初始化安装数据库
[root@sql1 mariadb-10.3.8]# cd /usr/local/mysql/ [root@sql1 mysql]# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/mydata/mariadb/ [root@sql1 mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mariadb [root@sql1 mysql]# chmod +x /etc/init.d/mariadb [root@sql1 mysql]# chkconfig --add mariadb
[root@sql1 mysql]# ln -s /usr/local/mysql/bin* /usr/local/bin
配置mariadb配置文件
[root@sql1 mysql]# vim /etc/my.cnf # 只修改这两项 datadir=/mydata/mariadb socket=/tmp/mysql.sock
启动mariadb数据库服务
[root@sql1 mysql]# systemctl start mariadb
# mysql_secure_installation 用来修改密码、删除匿名用户、取消远程链接
[root@sql1 mysql]# mysql_secure_installation
配置完成后就可以用mysql命令使用mariadb了