CentOS 7.5 编译安装 MariaDB 10.3.9

版权声明:本文为博主原创文章,未经博主允许不得转载 https://blog.csdn.net/qq_32828933/article/details/82720018

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

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

安装环境

  • 系统: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:提供功能键定义(快捷键),屏幕绘制以及基于文本终端的图形互动功能的动态库。
> 下载

[[email protected] 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

猜你喜欢

转载自blog.csdn.net/qq_32828933/article/details/82720018