源码编译mariadb(二)

2022-03-01 00:00:00 数据库 程序 命令 文件 目录

  之前折腾过一次源码编译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/optmariadb-10.5.9.tar.gz

    创建mysql用户专门负责运行mysql数据库,为了提高系统安全性,将该类账户的Bash终端设置为nologin解释器。

[root@opt]# useradd mysql -s /sbin/nologin[root@opt]# cat /etc/passwd | grep mysqlmysql:x:1000:1000::/home/mysql:/sbin/nologin

    创建用于保存mysql数据库程序和数据库文件的目录,并将其所有者和所属组修改为mysql,下面我将使用mysql保存数据库服务程序,var用于保存真实数据库文件。

mkdir -p /usr/local/mysql/varchown -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 -ycmake 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 directoryCouldn'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/mysqldchmod 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/mysqlmkdir /var/lib/mysqlln -s /tmp/mysql.sock /var/lib/mysql/mysql.sockln -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 MariaDBinstallation should now be secure.
Thanks for using MariaDB!


    终于完成!!!

来源 https://mp.weixin.qq.com/s/WR8UkvOCXexyfgoSt5cUzg

相关文章