之前折腾过一次源码编译mariadb数据库,准确的说是失败了,吸收了教训之后,这一次再来尝试一次,照例,为了防止依赖的影响,服务器已经完全格式化,服务器版本如下:
CentOS Linux release 8..1905 (Core)
安装必要的依赖,我就直接使用yum工具来解决了,
yum install gcc \
gcc-c++ \
bison \
libxml2-devel \
libevent-devel \
rpm-build \
ncurses-devel
前往官网下载mariadb,系统选择Source。
#官网
https://mariadb.org/download/
我是放在了服务器opt目录下
[root@opt]# pwd ; ls
/opt
mariadb-10.5.9.tar.gz
创建mysql用户专门负责运行mysql数据库,为了提高系统安全性,将该类账户的Bash终端设置为nologin解释器。
[root@opt]# useradd mysql -s /sbin/nologin
[root@opt]# cat /etc/passwd | grep mysql
mysql:x:1000:1000::/home/mysql:/sbin/nologin
创建用于保存mysql数据库程序和数据库文件的目录,并将其所有者和所属组修改为mysql,下面我将使用mysql保存数据库服务程序,var用于保存真实数据库文件。
mkdir -p /usr/local/mysql/var
chown -R mysql:mysql /usr/local/mysql
# 检查是否修改成功
ls -il /usr/local/mysql/
527361 drwxr-xr-x 2 mysql mysql 4096 Mar 3 20:01 var
开始解压文件,没什么好说的
tar -zxvf mariadb-*
因为没有configure,所以考虑使用cmake来帮我们生成Makefile,首先查看服务器是否具备cmake。
[root@mariadb-10.5.9]# cmake --version
-bash: cmake: command not found
# 安装
yum install cmake -y
cmake version 3.11.4
进行环境检测生成makefile文件,下面的参数和之前的说明是一样的,分别是数据库服务程序的保存目录,真实数据库文件目录和数据库配置文件的目录:
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/var \
-DSYSCONFDIR=/etc
配置文件报错Could NOT find GnuTLS,参考之前的文章
yum install gnutls-devel
记得删除目录下的CMakeCache.txt缓存文件再重新开始配置,
rm CMakeCache.txt
后提示如下,可以看到目录下生成了Makefile
为了让数据库程序正常运行,找到scripts目录下面的mariadb-install-db(可以看到这个目录下的mysql_install_db是mariadb-install-db的符号链接)程序运行如下命令
/usr/local/mysql/scripts/mariadb-install-db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var
!!!不要加入 --user=mysql参数,会莫名其妙的报错,而且目前我查到的两个答案都没法解决(一种是直接修改mariadb-install-db文件,一种是删除大约300行的代码),如下:
chown: cannot access './plugin/auth_pam/auth_pam_tool_dir/auth_pam_tool': No such file or directory
Couldn't set an owner to './plugin/auth_pam/auth_pam_tool_dir/auth_pam_tool'.
It must be root, the PAM authentication plugin doesn't work otherwise..
将程序目录中的开机程序文件复制到/etc/rc.d/init.d/目录中,这样可以使用service命令来管理数据库,并将脚本文件权限修改成755方便执行:
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod 755 /etc/rc.d/init.d/mysqld
编辑脚本文件,将在45行,46行basedir和datadir的修改成前面预设的目录
vim /etc/rc.d/init.d/mysqld
我们想要方便快捷的使用mysql数据库程序的命令,可以考虑将将命令保存的目录定义到PATH变量当中,未配置之前可以输入my然后按两下tab键,可以看到是没有数据库命令的:
vim /etc/profile
# 后一行加入mysql的命令所在目录
export PATH=$PATH:/usr/local/mysql/bin
# 保存退出后,让其马上生效
source /etc/profile
如何验证命令已经生效呢?还是输入my然后按两下tab键,可以看到很多可用命令:
mysql数据库服务器程序还会调用一些程序文件和函数库文件,由于是源码安装,所以也必须要手动将这些文件链接过来:
ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
mkdir /var/lib/mysql
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
ln -s /usr/local/mysql/include/mysql /usr/include/mysql
一切准备就绪,即可按照之前yum或者dnf安装mariadb一样进行操作数据库了,熟悉的配置画面
mysql_secure_installation
配置完成之后的提示:
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
终于完成!!!
来源 https://mp.weixin.qq.com/s/WR8UkvOCXexyfgoSt5cUzg