本文主要记录如何在
CentOS 7.5
中编译安装MariaDB
官方最新的10.3.9
版本。由于像Nginx
、MariaDB
和PHP
的的源码都是用C/C++
写的,所以自己的CentOS 7.5
服务器上必须要安装gcc
和g++
软件。搭建
LNMP
环境一般是先安装Mysql
/MariaDB
, 再安装Nginx
, 其次是安装PHP
文章目录
安装环境
- 系统:
CentOS 7.5.1804
- 软件:
MariaDB 10.3.9
- 依赖软件:
Cmake
、Ncurses
、Bison
、Boost
创建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/
Bison
:GNU
分析器生成器
> 下载
[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