安装环境
系统:CentOS 7.5
软件:MariaDB 10.2.25 官方下载地址 https://downloads.mariadb.org/interstitial/mariadb-10.2.25/source/mariadb-10.2.25.tar.gz/from/http%3A//mirrors.tuna.tsinghua.edu.cn/mariadb/ 首先安装软件包和编译器:
[root@mybcc ~]# yum install bison bison-devel zlib-devel libcurl-devel
libarchive-devel boost-devel gcc gcc-c++ cmake ncurses-devel
gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel -y
创建MariaDB安装目录、数据库存放目录、建立用户和目录
先创建一个名为mysql且没有登录权限的用户和一个名为mysql的用户组,然后安装mysql所需的依赖库和依赖包,最后通过cmake进行安装的详细配置。
创建mysql用户组和数据库相关目录
提前预定MariaDB
的安装目录为/app/mysql
并且数据目录为/data/mysql
,赋予mysql
用户权限
[root@mybcc ~]# mkdir /data/mysql -p
[root@mybcc ~]# useradd -r -s /sbin/nologin -d /data/mysql/ mysql
[root@mybcc ~]# chown mysql.mysql /data/mysql
删除CentOS 默认数据库配置文件
[root@mybcc ~]# 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@mybcc ~]# rm -rf /etc/my.cnf /etc/my.cnf.d/
[root@mybcc ~]# find -H /etc/ | grep my.c
/etc/pki/tls/certs/make-dummy-cert
/etc/pki/tls/certs/renew-dummy-cert
卸载系统自带mariadb-libs(查询若无略过)
[root@mybcc ~]# rpm -qa|grep mariadb*
mariadb-libs-5.5.60-1.el7_5.x86_64
[root@mybcc ~]# rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64 --nodeps
下载解压源码包(软件自行下载wget下载过慢)
解压
[root@mybcc ~]# tar xvf mariadb-10.2.25.tar.gz
cmake 编译安装(开始已安装)
cmake的重要特性之一是其独立于源码(out-of-source)的编译功能,即编译工作可以在另一个指定的目录中而非源码目录中进行,这可以保证源码目录不受任何一次编译的影响,因此在同一个源码树上可以进行多次不同的编译,如针对于不同平台编译
编译安装
[root@mybcc ~]# cd mariadb-10.2.25/
[root@mybcc mariadb-10.2.25]# cmake . \
-DCMAKE_INSTALL_PREFIX=/app/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DMYSQL_USER=mysql \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
提示:如果出错,执行rm -f CMakeCache.txt
[root@mybcc ~]# make && make install
注释版(拷贝来的以便自己理解,只为安装自觉略过)
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
准备环境变量
[root@mybc cprofile.d]# echo 'PATH=/app/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
[root@mybc cprofile.d]# . /etc/profile.d/mysql.sh
生成数据库文件(使用用户执行脚本, 安装数据库到数据库存放目录)
[root@mybc ~]#cd /app/mysql/
[root@mybc mysql]#scripts/mysql_install_db --datadir=/data/mysql/ --user=mysql
准备配置文件(>拷贝mariadb安装目录下 support-files目录下的文件wsrep.cnf到/etc目录并重命名为my.cnf)
[root@mybc ~]#cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf
准备启动脚本
[root@mybc ~]#cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld
启动服务
[root@mybc ~]#chkconfig --add mysqld ;service mysqld start
初始化MariaDB
[root@mybc ~]# ./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
服务
[root@mybc ~]# systemctl restart mysqld
查看MariaDB
服务状态(开启状态)
[root@mybc ~]# systemctl status mysqld
● mysqld.service - LSB: start and stop MariaDB
Loaded: loaded (/etc/rc.d/init.d/mysqld; bad; vendor preset: disabled)
Active: active (exited) since Sat 2019-08-10 21:24:46 CST; 7s ago
Docs: man:systemd-sysv-generator(8)
Process: 7702 ExecStart=/etc/rc.d/init.d/mysqld start (code=exited, status=0/SUCCESS)
Aug 10 21:24:46 mybcc systemd[1]: Starting LSB: start and stop MariaDB...
Aug 10 21:24:46 mybcc mysqld[7702]: Starting MariaDB[ OK ]
Aug 10 21:24:46 mybcc systemd[1]: Started LSB: start and stop MariaDB.
Aug 10 21:24:46 mybcc mysqld[7702]: 190810 21:24:46 mysqld_safe Logging to '/da...'.
Aug 10 21:24:46 mybcc mysqld[7702]: 190810 21:24:46 mysqld_safe A mysqld proces...ts
Hint: Some lines were ellipsized, use -l to show in full.