CentOS 7.5 编译安装 MariaDB 10.3.9

本文主要记录如何在CentOS 7.5中编译安装MariaDB官方最新的10.3.9版本。由于像NginxMariaDBPHP的的源码都是用C/C++写的,所以自己的CentOS 7.5服务器上必须要安装gccg++软件。

搭建LNMP环境一般是先安装Mysql/MariaDB, 再安装Nginx, 其次是安装PHP

文章目录

        • 安装环境
        • 创建MariaDB安装目录、数据库存放目录、建立用户和目录
        • 创建数据库相关目录
        • 删除CentOS 默认数据库配置文件
        • 卸载系统自带`mariadb-libs`
        • 安装相关包
        • 创建家目录存放软件包目录
        • 下载解压源码包
        • 编译前配置
        • 编译和安装
        • 配置`MariaDB`
        • 复制`MariaDB`配置文件到`/etc`目录
        • 创建启动脚本
        • 启动`mysqld`服务
        • 配置环境变量
        • 初始化MariaDB
        • 启动`MariaDB`服务
        • 查看`MariaDB`服务状态

安装环境

  • 系统:CentOS 7.5.1804
  • 软件:MariaDB 10.3.9
  • 依赖软件:CmakeNcursesBisonBoost

创建MariaDB安装目录、数据库存放目录、建立用户和目录

先创建一个名为mysql没有登录权限的用户和一个名为mysql的用户组,然后安装mysql所需的依赖库和依赖包,最后通过cmake进行安装的详细配置。

  • 创建mysql用户组
> 创建`mysql`用户组(`-r`选项是创建一个系统用户组的意思)[root@lightserver ~]$ groupadd -r mysql
  • 创建用户并加入到mysql系统用户组
> 添加新用户> -r: 添加系统用户( 这里指将要被创建的系统用户`mysql`)> -g: 指定要创建的用户所属组( 这里指添加到新系统用户`mysql`到`mysql`系统用户组 )> -s: 新帐户的登录`shell`( `/sbin/nologin` 这里设置为将要被创建系统用户`php`不能用来登录系统 )> -d: 新帐户的主目录( 这里指定将要被创建的系统用户`php`的家目录为 `/usr/local/php` )> -M: 不要创建用户的主目录( 也就是说将要被创建的系统用户`mysql`不会在 `/home` 目录下创建 `mysql` 家目录 )[root@lightserver ~]$ useradd -r -g mysql -s /sbin/nologin -d /usr/local/mysql -M mysql

创建数据库相关目录

提前预定MariaDB的安装目录为/usr/local/mysql并且数据目录为/data/mysql,赋予mysql用户权限

[root@lightserver ~]$ mkdir -pv /data/mysql[root@lightserver ~]$ chown -R mysql:mysql /data/mysql/

删除CentOS 默认数据库配置文件

[root@lightserver ~]$ find -H /etc/ | grep my.c /etc/my.cnf.d
/etc/my.cnf.d/mysql-clients.cnf
/etc/pki/tls/certs/make-dummy-cert
/etc/pki/tls/certs/renew-dummy-cert
/etc/my.cnf[root@lightserver ~]$ rm -rf /etc/my.cnf /etc/my.cnf.d/[root@lightserver ~]$ find -H /etc/ | grep my.c/etc/pki/tls/certs/make-dummy-cert
/etc/pki/tls/certs/renew-dummy-cert 

卸载系统自带mariadb-libs

> 查询[root@lightserver ~]$ rpm -qa|grep mariadb*mariadb-libs-5.5.60-1.el7_5.x86_64> 卸载[root@lightserver ~]$ rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64 --nodeps

安装相关包

[root@lightserver ~]$ yum -y install libaio libaio-devel bison bison-devel zlib-devel openssl openssl-devel ncurses ncurses-devel libcurl-devel libarchive-devel boost boost-devel lsof wget gcc gcc-c++ make cmake perl kernel-headers kernel-devel pcre-devel

创建家目录存放软件包目录

> 创建家目录存放软件包目录[root@lightserver ~]$ mkdir soft && cd soft

下载解压源码包

> 下载
[root@lightserver soft]$ wget https://downloads.mariadb.org/interstitial/mariadb-10.3.9/source/mariadb-10.3.9.tar.gz> 解压
# tar -zxvf mariadb-10.3.9.tar.gz
  • CMake:编译工具
> 下载[root@lightserver soft]$ wget https://cmake.org/files/v3.12/cmake-3.12.1.tar.gz> 解压# tar -zxvf cmake-3.12.1.tar.gz> 进入解压后的源码目录编译并安装# cd cmake-3.12.1/# ./bootstrap# gmake # make && make install# cmake --version# cd ~/soft/
  • Ncurses:提供功能键定义(快捷键),屏幕绘制以及基于文本终端的图形互动功能的动态库。
> 下载[root@lightserver.cn soft]$ wget http://ftp.gnu.org/gnu/ncurses/ncurses-6.1.tar.gz> 解压# tar -zxvf ncurses-6.1.tar.gz> 进入解压后的源码目录编译并安装# cd ncurses-6.1/# ./configure# make && make install# cd ~/soft/
  • BisonGNU分析器生成器
> 下载[root@lightserver soft]$ wget http://ftp.gnu.org/gnu/bison/bison-3.0.5.tar.gz> 解压# tar -zxvf bison-3.0.5.tar.gz> 进入解压后的源码目录编译并安装# cd bison-3.0.5/# ./configure# make && make install# cd ~/soft/
  • Boost库:一个开源可移植的C++库,是C++标准化进程的开发引擎之一
> 下载[root@lightserver soft]$ wget https://dl.bintray.com/boostorg/release/1.68.0/source/boost_1_68_0.tar.gz> 解压# tar -zxvf boost_1_68_0.tar.gz> 进入解压后的源码目录编译并安装# cd boost_1_68_0/# ./bootstrap.sh# ./b2 stage --with-iostreams --toolset=gcc link=static runtime-link=shared threading=multi release# ./b2 install --prefix=/opt/boost

编译前配置

# cd ~/soft/mariadb-10.3.9> 输入编译参数# cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLED_LOCAL_INFILE=1 \
-DENABLE_DOWNLOADS=1 \
-DEXTRA_CHARSETS=all \
-DSYSCONFDIR=/etc \
-DWITHOUT_TOKUDB=1 \
-DWITH_ARCHIVE_STPRAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1  \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LOBWRAP=0 \
-DMYSQL_DATADIR=/data/mysql \
-DMYSQL_USER=mysql \
-DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_MAINTAINER_MODE=0> 如果编译失败请删除CMakeCache.txt# rm -f CMakeCache.txt> 让指令重新执行,否则每次读取这个文件,命令修改正确也是报错 

注释版

# cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \           [MySQL安装的根目录]
-DDEFAULT_CHARSET=utf8 \                            [设置默认字符集为utf8]
-DDEFAULT_COLLATION=utf8_general_ci \               [设置默认字符校对]
-DENABLED_LOCAL_INFILE=1 \                          [启用加载本地数据]
-DENABLE_DOWNLOADS=1 \                              [编译时允许自主下载相关文件]
-DEXTRA_CHARSETS=all \                              [使MySQL支持所有的扩展字符]
-DSYSCONFDIR=/etc \                                 [MySQL配置文件所在目录]
-DWITHOUT_TOKUDB=1 \
-DWITH_ARCHIVE_STPRAGE_ENGINE=1 \                   [MySQL的数据库引擎]
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \                   [MySQL的数据库引擎]
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \                 [MySQL的数据库引擎]
-DWITH_DEBUG=0 \                                    [禁用调试模式]
-DWITH_MEMORY_STORAGE_ENGINE=1 \                    [MySQL的数据库引擎]
-DWITH_MYISAM_STORAGE_ENGINE=1 \                    [MySQL的数据库引擎]
-DWITH_INNOBASE_STORAGE_ENGINE=1 \                  [MySQL的数据库引擎]
-DWITH_PARTITION_STORAGE_ENGINE=1  \                [MySQL的数据库引擎]
-DWITH_READLINE=1 \                                 [MySQL的readline library]
-DWITH_SSL=system \                                 [通讯时支持ssl协议]
-DWITH_ZLIB=system \                                [允许使用zlib library]
-DWITH_LOBWRAP=0 \
-DMYSQL_DATADIR=/data/mysql \                       [MySQL数据库文件存放目录]
-DMYSQL_USER=mysql \                                [MySQL用户名] 
-DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock \       [MySQL的通讯目录]
-DMYSQL_TCP_PORT=3306 \                             [MySQL的监听端口]
-DMYSQL_MAINTAINER_MODE=0

编译和安装

# make && make install
# cd

配置MariaDB

> 使用maria用户执行脚本, 安装数据库到数据库存放目录[root@lightserver ~]$ /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/mysql

复制MariaDB配置文件到/etc目录

> 拷贝maria安装目录下 support-files目录下的文件wsrep.cnf到/etc目录并重命名为my.cnf[root@lightserver ~]$ cp /usr/local/mysql/support-files/wsrep.cnf /etc/my.cnf

创建启动脚本

[root@lightserver ~]$ cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld

启动mysqld服务

[root@lightserver ~]$ /etc/rc.d/init.d/mysqld start

配置环境变量

> 打开并新建文件[root@lightserver ~]$ vim /etc/profile.d/mysql.sh> 输入以下内容export PATH=$PATH:/usr/local/mysql/bin/> 保存并退出:wq> 为脚本赋于可执行权限[root@lightserver ~]$ chmod 0777 /etc/profile.d/mysql.sh> 读取并执行`mysql.sh`脚本, 并执行脚本, 以立即生效环境变量[root@lightserver ~]$ source /etc/profile.d/mysql.sh

初始化MariaDB

> 运行MariaDB初始化脚本[root@lightserver ~]$ /usr/local/mysql/bin/mysql_secure_installation
Nh123456;> 运行MariaDB初始化脚本[root@localhost mysql]$ ./bin/mysql_secure_installation> 以下提示:Enter current password for root (enter for none):   输入当前root密码(没有输入)Set root password? [Y/n]    设置root密码?(是/否)New password:   输入新root密码Re-enter new password:      确认输入root密码Password updated successfully!      密码更新成功By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.默认情况下,MariaDB安装有一个匿名用户,
允许任何人登录MariaDB而他们无需创建用户帐户。
这个目的是只用于测试,安装去更平缓一些。
你应该进入前删除它们生产环境。Remove anonymous users? [Y/n]       删除匿名用户?(是/否)Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.通常情况下,root只应允许从localhost连接。
这确保其他用户无法从网络猜测root密码。Disallow root login remotely? [Y/n]     不允许root登录远程?(是/否)By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.默认情况下,MariaDB提供了一个名为“测试”的数据库,任何人都可以访问。
这也只用于测试,在进入生产环境之前应该被删除。Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.重新加载权限表将确保所有到目前为止所做的更改将立即生效。Reload privilege tables now? [Y/n]      现在重新加载权限表(是/否)All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.全部完成!如果你已经完成了以上步骤,MariaDB安装现在应该安全。Thanks for using MariaDB!感谢使用MariaDB!

启动MariaDB服务

[root@lightserver ~]$ systemctl start mysqld

查看MariaDB服务状态

[root@lightserver ~]$ systemctl status mysqld


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部