MariaDB源码编译安装

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介: 本节介绍了在多种 Linux 发行版上通过源码编译安装 MariaDB 的完整过程,包括用户创建、目录准备、依赖安装、源码编译配置(CMake)、编译安装参数说明、错误排查与解决方法,以及后续的数据库初始化、配置文件设置、服务启动与安全加固等内容。整个流程适用于 Rocky、CentOS、openEuler、Ubuntu、openSUSE 等主流系统,具备良好的可操作性和跨平台兼容性。

2.4 源码编译安装MariaDB

建议:内存6G以上,否则编译时可能会出错,这里设置的4C8G。

2.4.1 用户和组

# Rocky、Almalinux、CentOS、openEuler、AnolisOS、OpenCloudOS、 Kylin Server、UOS Server、Ubuntu、Debian
useradd -r -s /sbin/nologin -d /data/mariadb mysql

# openSUSE
groupadd -r mysql
useradd -s /sbin/nologin -d /data/mariadb -r -g mysql mysql

2.4.2 准备数据库目录

mkdir -p /data/mariadb

chown mysql:mysql /data/mariadb

2.4.3 下载并解压缩源码包

MariaDB源码包下载,去“https://mariadb.org/”网站下载,选择“Download”。

t10

图10 MariaDB首页

在打开的网页,在“MariaDB Server”下面选择“MariaDB Server Version为:MariaDB Server 11.8.3”,选择“Operating System为:Source”,然后选择“Mirror为:清华大学 TUNA 协会 (Tsinghua University TUNA Association)”,最后选择“Download”下载。

t11

图11 MariaDB源码包下载

# Rocky、Almalinux、CentOS、AnolisOS、OpenCloudOS、Kylin Server默认没有wget包,需要安装
yum install -y wget

# openEuler 22.03/24.03 LTS、AnolisOS 23、OpenCloudOS 9没有安装tar包,需要安装
yum install -y tar

cd /usr/local/src

Rocky 8/9/10、Almalinux 8/9/10、CentOS Stream 8/9/10、openEuler 22.03/24.03 LTS、AnolisOS 8/23、OpenCloudOS 8/9、Kylin Server v10、UOS Server v20、openSUSE 15、Ubuntu Server 18.04/20.04/22.04/24.04 LTS、Debian 11/12/13:

wget https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-11.8.3/source/mariadb-11.8.3.tar.gz
tar xf mariadb-11.8.3.tar.gz

# 下载fmt-11.1.4.zip
# github官方
https://github.com/fmtlib/fmt/releases/download/11.1.4/fmt-11.1.4.zip

# github镜像站
wget "https://gh-proxy.com/https://github.com/fmtlib/fmt/releases/download/11.1.4/fmt-11.1.4.zip"
mkdir -p /usr/local/src/mariadb-11.8.3/extra/libfmt/src/
mv fmt-11.1.4.zip /usr/local/src/mariadb-11.8.3/extra/libfmt/src/

CentOS 7:

wget https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-10.11.14/source/mariadb-10.11.14.tar.gz
tar xf mariadb-10.11.14.tar.gz

# fmt-11.0.2.zip
# github官方
wget https://github.com/fmtlib/fmt/releases/download/11.0.2/fmt-11.0.2.zip

# github镜像站
wget "https://gh-proxy.com/https://github.com/fmtlib/fmt/releases/download/11.0.2/fmt-11.0.2.zip"
mkdir -p /usr/local/src/mariadb-10.11.14/extra/libfmt/src/
mv fmt-11.0.2.zip /usr/local/src/mariadb-10.11.14/extra/libfmt/src/

2.4.4 源码编译安装mariadb

编译安装说明 :

利用cmake编译,而利用传统方法,cmake的重要特性之一是其独立于源码(out-of-source)的编译功能,即编译工作可以在另一个指定的目录中而非源码目录中进行,这可以保证源码目录不受任何一次编译的影响,因此在同一个源码树上可以进行多次不同的编译,如针对于不同平台编译

编译选项:https://mariadb.com/docs/server/server-management/install-and-upgrade-mariadb/installing-mariadb/compiling-mariadb-from-source/generic-build-instructions

MariaDB cmake 一些常用的参数解释

-DCMAKE_INSTALL_PREFIX # MariaDB 的安装目录
-DMYSQL_DATADIR # MariaDB 数据存储路径
-DSYSCONFDIR # 配置文件目录
-DMYSQL_USER # MariaDB 启动的用户名称,默认为 mysql
-DWITH_INNOBASE_STORAGE_ENGINE # 是否安装 innodb 存储引擎 - 参数:1 or 0
-DWITH_ARCHIVE_STORAGE_ENGINE # 是否安装 archive 存储引擎 - 参数:1 or 0
-DWITH_BLACKHOLE_STORAGE_ENGINE # 是否安装 blackhole 存储引擎 - 参数:1 or 0
-DWITH_PARTITION_STORAGE_ENGINE # 是 MariaDB 源码编译安装时用于启用分区存储引擎的 CMake 参数,其作用是编译分区引擎到服务器中,使其支持分区功能(MariaDB 的分区引擎以插件形式构建,可通过此参数静态编译到服务器中)。
-DWITHOUT_MROONGA_STORAGE_ENGINE # 该参数用于在编译 MariaDB 时 禁用 Mroonga 存储引擎(即不将其编译到服务器中)。
-DWITH_DEBUG # 是 MariaDB 编译时的一个 CMake 参数,用于启用或禁用调试模式,1是启用,0是禁用
-DWITH_READLINE # 启用 Readline 库支持,提升 MariaDB 命令行客户端的交互性,1是启用,0是禁用。
-DWITH_SSL # 用于指定是否启用 SSL 支持,system是使用系统已安装的 OpenSSL(推荐,依赖系统包)。
-DWITH_ZLIB # 用于指定是否启用对 zlib 压缩库 的支持,system是使用系统中已安装的 zlib 库(推荐) 。
-DWITH_PCRE # 用于指定 是否以及如何启用 PCRE(Perl Compatible Regular Expressions)库 支持。这个库是 MariaDB 用于处理 正则表达式匹配(如  REGEXP ,  RLIKE ,  REGEXP_REPLACE  等 SQL 语法)的核心依赖。system是使用操作系统中已安装的 PCRE 库(推荐,减少重复编译)
-DWITH_BOOST # 用来告诉 MariaDB 的构建系统 到哪里去找 Boost C++ 库。system是 让 CMake 直接去找 系统已安装的 boost-devel 包。
-DWITH_LIBWRAP # 用于控制是否启用 libwrap(TCP Wrappers)支持,0是禁用 libwrap,不启用 TCP Wrappers 支持,避免潜在的性能影响
-DENABLED_LOCAL_INFILE # 是否开启 load data infile 命令 - 参数:1 or 0
-DMYSQL_UNIX_ADDR # Unix socket 文件路径
-DDEFAULT_CHARSET # 默认字符集
-DDEFAULT_COLLATION # 校验字符
-DWITH_SYSTEMD # 是否 systemctl 管理 - 参数:yes or no

2.4.4.1 Rocky 9/10、Almalinux 9/10、AnolisOS 23和OpenCloudOS 9

进入mariadb包解压的目录:

cd mariadb-11.8.3/

安装cmake包:

yum install -y cmake

执行cmake:

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:40 (PROJECT):
  No CMAKE_C_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
  the compiler, or to the compiler name if it is in the PATH.  # 提示,通过设置环境变量 “CC” 或 CMake 缓存条目CMAKE_C_COMPILER到编译器,或者如果编译器名称在 PATH,需要安装gcc。


CMake Error at CMakeLists.txt:40 (PROJECT):
  No CMAKE_CXX_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
  to the compiler, or to the compiler name if it is in the PATH. # 提示,通过设置环境变量 “CXX” 或 CMake 缓存条目CMAKE_CXX_COMPILER完整路径添加到编译器,或者添加到编译器名称(如果它在 PATH 中),需要安装gcc-c++。


-- Configuring incomplete, errors occurred!

安装gcc和gcc-c++包:

yum install -y gcc gcc-c++

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at cmake/ssl.cmake:150 (MESSAGE):
  Cannot find appropriate system libraries for SSL.  Use WITH_SSL=bundled to
  enable SSL support # 提示,找不到适当的系统库来支持SSL。使用WITH_SSL=bundled来启用SSL支持
Call Stack (most recent call first):
  CMakeLists.txt:425 (MYSQL_CHECK_SSL)


-- Configuring incomplete, errors occurred!

安装openssl-devel包:

yum install -y openssl-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:233 (message):
  Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH) # 提示,找不到 Curses 库。
Call Stack (most recent call first):
  /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:603 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake/Modules/FindCurses.cmake:268 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  cmake/readline.cmake:55 (FIND_PACKAGE)
  cmake/readline.cmake:188 (FIND_CURSES)
  CMakeLists.txt:427 (MYSQL_CHECK_READLINE)


-- Configuring incomplete, errors occurred!

安装ncurses-devel包:

yum install -y ncurses-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at cmake/pcre.cmake:99 (MESSAGE):
  system pcre2-8 library is not found or unusable # 提示,系统pcre2-8库找不到或不可用
Call Stack (most recent call first):
  CMakeLists.txt:431 (CHECK_PCRE)


-- Configuring incomplete, errors occurred!

安装pcre2-devel包:

yum install -y pcre2-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at cmake/systemd.cmake:77 (MESSAGE):
  Requested WITH_SYSTEMD=yes however no dependencies installed/found
Call Stack (most recent call first): # 请求的WITH_SYSTEMD=是,但未安装/找到依赖项调用堆栈(最近的调用优先)
  CMakeLists.txt:434 (CHECK_SYSTEMD)


-- Configuring incomplete, errors occurred!

安装systemd-devel包:

yum install -y systemd-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
# 编译完成后会有类似如下的输出
-- The following OPTIONAL packages have not been found:

 * ZLIB
 * LibXml2
 * Java (required version >= 1.6)
   Required for the CONNECT_JDBC feature
 * JNI
   Required for the CONNECT_JDBC feature
 * Boost (required version >= 1.40.0)
   Required for the OQGraph storage engine
 * GSSAPI
 * CURL
 * BZip2
 * LZ4 (required version >= 1.6)
 * LibLZMA
 * LZO
 * Snappy
 * BISON (required version >= 2.4)

-- Configuring done (62.5s)
-- Generating done (0.9s)
-- Build files have been written to: /usr/local/src/mariadb-11.8.3

执行make:

make -j $(nproc) && make install

总结编译过程:

# 安装依赖包
yum install -y cmake gcc gcc-c++ openssl-devel ncurses-devel pcre2-devel systemd-devel

# 进入mariadb包解压的目录
cd mariadb-11.8.3/

# 执行cmake
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes

# 执行make
make -j $(nproc) && make install

2.4.4.2 Rocky 8、Almalinux 8、CentOS Stream 8、AnolisOS 8和OpenCloudOS 8

进入mariadb包解压的目录:

cd mariadb-11.8.3/

安装cmake包:

yum install -y cmake

执行cmake:

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:40 (PROJECT):
  No CMAKE_C_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
  the compiler, or to the compiler name if it is in the PATH.  # 提示,通过设置环境变量 “CC” 或 CMake 缓存条目CMAKE_C_COMPILER到编译器,或者如果编译器名称在 PATH,需要安装gcc。


CMake Error at CMakeLists.txt:40 (PROJECT):
  No CMAKE_CXX_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
  to the compiler, or to the compiler name if it is in the PATH. # 通过设置环境变量 “CXX” 或 CMake 缓存条目CMAKE_CXX_COMPILER完整路径添加到编译器,或者添加到编译器名称(如果它在 PATH 中),需要安装gcc-c++。


-- Configuring incomplete, errors occurred!

安装gcc和gcc-c++包:

yum install -y gcc gcc-c++

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at cmake/ssl.cmake:150 (MESSAGE):
  Cannot find appropriate system libraries for SSL.  Use WITH_SSL=bundled to
  enable SSL support # 提示,找不到适当的系统库来支持SSL。使用WITH_SSL=bundled来启用SSL支持
Call Stack (most recent call first):
  CMakeLists.txt:425 (MYSQL_CHECK_SSL)


-- Configuring incomplete, errors occurred!

安装openssl-devel包:

yum install -y openssl-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:233 (message):
  Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH) # 提示,找不到 Curses 库。
Call Stack (most recent call first):
  /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:603 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake/Modules/FindCurses.cmake:268 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  cmake/readline.cmake:55 (FIND_PACKAGE)
  cmake/readline.cmake:188 (FIND_CURSES)
  CMakeLists.txt:427 (MYSQL_CHECK_READLINE)


-- Configuring incomplete, errors occurred!

安装ncurses-devel包:

yum install -y ncurses-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at cmake/systemd.cmake:77 (MESSAGE):
  Requested WITH_SYSTEMD=yes however no dependencies installed/found
Call Stack (most recent call first): # 请求的WITH_SYSTEMD=是,但未安装/找到依赖项调用堆栈(最近的调用优先)
  CMakeLists.txt:434 (CHECK_SYSTEMD)


-- Configuring incomplete, errors occurred!

安装systemd-devel包:

yum install -y systemd-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
# 编译完成后会有类似如下的输出
-- The following OPTIONAL packages have not been found:

 * Python3
 * LibXml2
 * Java (required version >= 1.6)
   Required for the CONNECT_JDBC feature
 * JNI
   Required for the CONNECT_JDBC feature
 * Boost (required version >= 1.40.0)
   Required for the OQGraph storage engine
 * CURL
 * BZip2
 * LZ4 (required version >= 1.6)
 * LibLZMA
 * LZO
 * Snappy
 * BISON (required version >= 2.4)

-- Configuring done (54.7s)
-- Generating done (0.8s)
-- Build files have been written to: /usr/local/src/mariadb-11.8.3

执行make:

make -j $(nproc) && make install

总结编译过程:

# 安装依赖包
yum install -y cmake gcc gcc-c++ openssl-devel ncurses-devel systemd-devel

# 进入mariadb包解压的目录
cd mariadb-11.8.3/

# 执行cmake
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes

# 执行make
make -j $(nproc) && make install

2.4.4.3 CentOS Stream 9/10

进入mariadb包解压的目录:

cd mariadb-11.8.3/

安装cmake包:

yum install -y cmake

执行cmake:

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at cmake/ssl.cmake:150 (MESSAGE):
  Cannot find appropriate system libraries for SSL.  Use WITH_SSL=bundled to
  enable SSL support # 提示,找不到适当的系统库来支持SSL。使用WITH_SSL=bundled来启用SSL支持
Call Stack (most recent call first):
  CMakeLists.txt:425 (MYSQL_CHECK_SSL)


-- Configuring incomplete, errors occurred!

安装openssl-devel包:

yum install -y openssl-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:233 (message):
  Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH) # 提示,找不到 Curses 库。
Call Stack (most recent call first):
  /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:603 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake/Modules/FindCurses.cmake:268 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  cmake/readline.cmake:55 (FIND_PACKAGE)
  cmake/readline.cmake:188 (FIND_CURSES)
  CMakeLists.txt:427 (MYSQL_CHECK_READLINE)


-- Configuring incomplete, errors occurred!

安装ncurses-devel:

yum install -y ncurses-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at cmake/pcre.cmake:99 (MESSAGE):
  system pcre2-8 library is not found or unusable # 提示,系统pcre2-8库找不到或不可用
Call Stack (most recent call first):
  CMakeLists.txt:431 (CHECK_PCRE)


-- Configuring incomplete, errors occurred!

安装pcre2-devel包:

yum install -y pcre2-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at cmake/systemd.cmake:77 (MESSAGE):
  Requested WITH_SYSTEMD=yes however no dependencies installed/found
Call Stack (most recent call first): # 请求的WITH_SYSTEMD=是,但未安装/找到依赖项调用堆栈(最近的调用优先)
  CMakeLists.txt:434 (CHECK_SYSTEMD)


-- Configuring incomplete, errors occurred!

安装systemd-devel包:

yum install -y systemd-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
# 编译完成后会有类似如下的输出
-- The following OPTIONAL packages have not been found:

 * ZLIB
 * LibXml2
 * Java (required version >= 1.6)
   Required for the CONNECT_JDBC feature
 * JNI
   Required for the CONNECT_JDBC feature
 * Boost (required version >= 1.40.0)
   Required for the OQGraph storage engine
 * GSSAPI
 * CURL
 * BZip2
 * LZ4 (required version >= 1.6)
 * LibLZMA
 * LZO
 * Snappy
 * BISON (required version >= 2.4)

-- Configuring done (75.9s)
-- Generating done (1.0s)
-- Build files have been written to: /usr/local/src/mariadb-11.8.3

执行make:

make -j $(nproc) && make install

总结编译过程:

# 安装依赖包
yum install -y cmake openssl-devel ncurses-devel pcre2-devel systemd-devel

# 进入mariadb包解压的目录
cd mariadb-11.8.3/

# 执行cmake
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes

# 执行make
make -j $(nproc) && make install

2.4.4.4 CentOS 7

进入mariadb包解压的目录:

cd mariadb-10.11.14/

安装cmake包:

yum install -y cmake

执行cmake:

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
CMake Error: your C compiler: "CMAKE_C_COMPILER-NOTFOUND" was not found.   Please set CMAKE_C_COMPILER to a valid compiler path or name. # 提示,CMake错误:找不到C编译器:“CMake_C_compiler-NOTFOUND”。请将CMAKE_C_COMPILER设置为有效的编译器路径或名称,需要安装gcc。
CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found.   Please set CMAKE_CXX_COMPILER to a valid compiler path or name. # CMake错误:找不到CXX编译器:“CMake_CXX_compiler-NOTFOUND”。请将CMAKE_CXX_COMPILER设置为有效的编译器路径或名称,需要安装gcc-c++。

安装gcc和gcc-c++包:

yum install -y gcc gcc-c++

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at cmake/ssl.cmake:150 (MESSAGE):
  Cannot find appropriate system libraries for SSL.  Use WITH_SSL=bundled to
  enable SSL support # 提示,找不到适当的系统库来支持SSL。使用WITH_SSL=bundled来启用SSL支持
Call Stack (most recent call first):
  CMakeLists.txt:425 (MYSQL_CHECK_SSL)


-- Configuring incomplete, errors occurred!
See also "/usr/local/src/mariadb-10.11.14/CMakeFiles/CMakeOutput.log".
See also "/usr/local/src/mariadb-10.11.14/CMakeFiles/CMakeError.log".

安装openssl-devel包:

yum install -y openssl-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:108 (message):
  Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH) # 提示,找不到 Curses 库。
Call Stack (most recent call first):
  /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:315 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake/Modules/FindCurses.cmake:159 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  cmake/readline.cmake:55 (FIND_PACKAGE)
  cmake/readline.cmake:188 (FIND_CURSES)
  CMakeLists.txt:427 (MYSQL_CHECK_READLINE)


-- Configuring incomplete, errors occurred!
See also "/usr/local/src/mariadb-10.11.14/CMakeFiles/CMakeOutput.log".
See also "/usr/local/src/mariadb-10.11.14/CMakeFiles/CMakeError.log".

安装ncurses-devel:

yum install -y ncurses-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at cmake/pcre.cmake:99 (MESSAGE):
  system pcre2-8 library is not found or unusable # 提示,系统pcre2-8库找不到或不可用
Call Stack (most recent call first):
  CMakeLists.txt:431 (CHECK_PCRE)


-- Configuring incomplete, errors occurred!
See also "/usr/local/src/mariadb-10.11.14/CMakeFiles/CMakeOutput.log".
See also "/usr/local/src/mariadb-10.11.14/CMakeFiles/CMakeError.log".

安装pcre2包:

yum install -y pcre2-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at tpool/CMakeLists.txt:18 (TARGET_SOURCES):
  Unknown CMake command "TARGET_SOURCES".


-- Configuring incomplete, errors occurred!
See also "/usr/local/src/mariadb-10.11.14/CMakeFiles/CMakeOutput.log".
See also "/usr/local/src/mariadb-10.11.14/CMakeFiles/CMakeError.log".

安装cmake:

去“https://cmake.org/download/”网址下载cmake二进制包,如图12所示。

t12

图12 下载cmake二进制包

# 卸载cmake
yum remove -y cmake

cd ..

# github下载地址:
wget https://github.com/Kitware/CMake/releases/download/v3.31.7/cmake-3.31.7-linux-x86_64.tar.gz

# 国内下载地址:
wget https://cmake.org/files/v3.31/cmake-3.31.7-linux-x86_64.tar.gz
tar xf cmake-3.31.7-linux-x86_64.tar.gz -C /usr/local/
ln -s /usr/local/cmake-3.31.7-linux-x86_64/bin/cmake /usr/bin/

[root@centos7 src]# cmake --version
cmake version 3.31.7

CMake suite maintained and supported by Kitware (kitware.com/cmake).

再次进入mariadb包解压的目录:

cd mariadb-10.11.14/

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at cmake/systemd.cmake:77 (MESSAGE):
  Requested WITH_SYSTEMD=yes however no dependencies installed/found
Call Stack (most recent call first): # 提示,请求的WITH_SYSTEMD=是,但未安装/找到依赖项调用堆栈(最近的调用优先)
  CMakeLists.txt:434 (CHECK_SYSTEMD)


-- Configuring incomplete, errors occurred!

安装systemd-devel包:

yum install -y systemd-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
# 编译完成后会有类似如下的输出
-- The following OPTIONAL packages have not been found:

 * Git
 * LibXml2
 * Java (required version >= 1.6)
   Required for the CONNECT_JDBC feature
 * JNI
   Required for the CONNECT_JDBC feature
 * Boost (required version >= 1.40.0)
   Required for the OQGraph storage engine
 * CURL
 * BZip2
 * LZ4 (required version >= 1.6)
 * LibLZMA
 * LZO
 * Snappy
 * BISON (required version >= 2.4)

-- Configuring done (26.8s)
-- Generating done (0.8s)
-- Build files have been written to: /usr/local/src/mariadb-10.11.14

执行make:

make -j $(nproc) && make install

总结编译过程:

# 安装依赖包
yum install -y gcc gcc-c++ openssl-devel ncurses-devel pcre2-devel systemd-devel

# 安装cmake
wget https://cmake.org/files/v3.31/cmake-3.31.7-linux-x86_64.tar.gz
tar xf cmake-3.31.7-linux-x86_64.tar.gz -C /usr/local/
ln -s /usr/local/cmake-3.31.7-linux-x86_64/bin/cmake /usr/bin/

# 进入mariadb包解压的目录
cd mariadb-10.11.14/

# 执行cmake
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes

# 执行make
make -j $(nproc) && make install

2.4.4.5 openEuler 24.03 LTS和Kylin Server V11

进入mariadb包解压的目录:

cd mariadb-11.8.3/

安装cmake包:

yum install -y cmake

执行cmake:

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool. # 提示,CMake找不到与“Unix Makefiles”对应的构建程序。未设置CMAKE_MAKE_PROGRAM。您可能需要选择不同的构建工具,需要安装make。
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage # 提示,CMake错误:启用语言后未设置CMake_C_COMPILER,需要安装gcc。
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage # 提示,CMake错误:启用语言后未设置CMake_CXX_COMPILER,,需要安装gcc-c++。
-- Configuring incomplete, errors occurred!

安装gcc和gcc-c++包:

yum install -y make gcc gcc-c++

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at cmake/ssl.cmake:150 (MESSAGE):
  Cannot find appropriate system libraries for SSL.  Use WITH_SSL=bundled to
  enable SSL support # 提示,找不到适当的系统库来支持SSL。使用WITH_SSL=bundled来启用SSL支持
Call Stack (most recent call first):
  CMakeLists.txt:425 (MYSQL_CHECK_SSL)


-- Configuring incomplete, errors occurred!

安装openssl-devel包:

yum install -y openssl-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:233 (message):
  Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH) # 提示,找不到 Curses 库。
Call Stack (most recent call first):
  /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:603 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake/Modules/FindCurses.cmake:268 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  cmake/readline.cmake:55 (FIND_PACKAGE)
  cmake/readline.cmake:188 (FIND_CURSES)
  CMakeLists.txt:427 (MYSQL_CHECK_READLINE)


-- Configuring incomplete, errors occurred!

安装ncurses-devel:

yum install -y ncurses-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at cmake/pcre.cmake:99 (MESSAGE):
  system pcre2-8 library is not found or unusable # 提示,系统pcre2-8库找不到或不可用
Call Stack (most recent call first):
  CMakeLists.txt:431 (CHECK_PCRE)


-- Configuring incomplete, errors occurred!

安装pcre2包:

yum install -y pcre2-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at cmake/systemd.cmake:77 (MESSAGE):
  Requested WITH_SYSTEMD=yes however no dependencies installed/found
Call Stack (most recent call first): # 请求的WITH_SYSTEMD=是,但未安装/找到依赖项调用堆栈(最近的调用优先)
  CMakeLists.txt:434 (CHECK_SYSTEMD)


-- Configuring incomplete, errors occurred!

安装systemd-devel包:

yum install -y systemd-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
# 编译完成后会有类似如下的输出
-- The following OPTIONAL packages have not been found:

 * ZLIB
 * LibXml2
 * Java (required version >= 1.6)
   Required for the CONNECT_JDBC feature
 * JNI
   Required for the CONNECT_JDBC feature
 * Boost (required version >= 1.40.0)
   Required for the OQGraph storage engine
 * GSSAPI
 * CURL
 * BZip2
 * LZ4 (required version >= 1.6)
 * LibLZMA
 * LZO
 * Snappy
 * BISON (required version >= 2.4)

-- Configuring done (70.7s)
-- Generating done (0.7s)
-- Build files have been written to: /usr/local/src/mariadb-11.8.3

执行make:

make -j $(nproc) && make install

总结编译过程:

# 安装依赖包
yum install -y cmake make gcc gcc-c++ openssl-devel ncurses-devel pcre2-devel systemd-devel

# 进入mariadb包解压的目录
cd mariadb-11.8.3/

# 执行cmake
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes

# 执行make
make -j $(nproc) && make install

2.4.4.6 openEuler 22.03 LTS、Kylin Server V10

进入mariadb包解压的目录:

cd mariadb-11.8.3/

安装cmake包:

yum install -y cmake

执行cmake:

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool. # 提示,CMake找不到与“Unix Makefiles”对应的构建程序。未设置CMAKE_MAKE_PROGRAM。您可能需要选择不同的构建工具,需要安装make。
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage # 提示,CMake错误:启用语言后未设置CMake_C_COMPILER,需要安装gcc。
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage # 提示,CMake错误:启用语言后未设置CMake_CXX_COMPILER,,需要安装gcc-c++。
-- Configuring incomplete, errors occurred!

安装gcc和gcc-c++包:

yum install -y make gcc gcc-c++

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at cmake/ssl.cmake:150 (MESSAGE):
  Cannot find appropriate system libraries for SSL.  Use WITH_SSL=bundled to
  enable SSL support # 提示,找不到适当的系统库来支持SSL。使用WITH_SSL=bundled来启用SSL支持
Call Stack (most recent call first):
  CMakeLists.txt:425 (MYSQL_CHECK_SSL)


-- Configuring incomplete, errors occurred!

安装openssl-devel包:

yum install -y openssl-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:233 (message):
  Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH) # 提示,找不到 Curses 库。
Call Stack (most recent call first):
  /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:603 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake/Modules/FindCurses.cmake:268 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  cmake/readline.cmake:55 (FIND_PACKAGE)
  cmake/readline.cmake:188 (FIND_CURSES)
  CMakeLists.txt:427 (MYSQL_CHECK_READLINE)


-- Configuring incomplete, errors occurred!

安装ncurses-devel:

yum install -y ncurses-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at cmake/systemd.cmake:77 (MESSAGE):
  Requested WITH_SYSTEMD=yes however no dependencies installed/found
Call Stack (most recent call first): # # 请求的WITH_SYSTEMD=是,但未安装/找到依赖项调用堆栈(最近的调用优先)
  CMakeLists.txt:434 (CHECK_SYSTEMD)


-- Configuring incomplete, errors occurred!
See also "/usr/local/src/mariadb-11.8.3/CMakeFiles/CMakeOutput.log".
See also "/usr/local/src/mariadb-11.8.3/CMakeFiles/CMakeError.log".

安装systemd-devel包:

yum install -y systemd-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
# 编译完成后会有类似如下的输出
-- The following OPTIONAL packages have not been found:

 * LibXml2
 * Java (required version >= 1.6)
   Required for the CONNECT_JDBC feature
 * JNI
   Required for the CONNECT_JDBC feature
 * Boost (required version >= 1.40.0)
   Required for the OQGraph storage engine
 * CURL
 * BZip2
 * LZ4 (required version >= 1.6)
 * LibLZMA
 * LZO
 * Snappy
 * BISON (required version >= 2.4)

-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/src/mariadb-11.8.3

执行make:

make -j $(nproc) && make install

总结编译过程:

# 安装依赖包
yum install -y cmake make gcc gcc-c++ openssl-devel ncurses-devel systemd-devel

# 进入mariadb包解压的目录
cd mariadb-11.8.3/

# 执行cmake
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes

# 执行make
make -j $(nproc) && make install

2.4.4.7 UOS Server V20

进入mariadb包解压的目录:

cd mariadb-11.8.3/

安装cmake包:

yum install -y cmake

执行cmake:

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:146 (message):
  Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH) # 提示,找不到 Curses 库。
Call Stack (most recent call first):
  /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:393 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake/Modules/FindCurses.cmake:258 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  cmake/readline.cmake:55 (FIND_PACKAGE)
  cmake/readline.cmake:188 (FIND_CURSES)
  CMakeLists.txt:427 (MYSQL_CHECK_READLINE)


-- Configuring incomplete, errors occurred!
See also "/usr/local/src/mariadb-11.8.3/CMakeFiles/CMakeOutput.log".
See also "/usr/local/src/mariadb-11.8.3/CMakeFiles/CMakeError.log".

安装ncurses-devel:

yum install -y ncurses-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at cmake/systemd.cmake:77 (MESSAGE):
  Requested WITH_SYSTEMD=yes however no dependencies installed/found
Call Stack (most recent call first): # 提示,请求的WITH_SYSTEMD=是,但未安装/找到依赖项调用堆栈(最近的调用优先)
  CMakeLists.txt:434 (CHECK_SYSTEMD)


-- Configuring incomplete, errors occurred!
See also "/usr/local/src/mariadb-11.8.3/CMakeFiles/CMakeOutput.log".
See also "/usr/local/src/mariadb-11.8.3/CMakeFiles/CMakeError.log".

安装systemd-devel包:

yum install -y systemd-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
# 编译完成后会有类似如下的输出
-- The following OPTIONAL packages have not been found:

 * LibXml2
 * Java (required version >= 1.6)
   Required for the CONNECT_JDBC feature
 * JNI
   Required for the CONNECT_JDBC feature
 * Boost (required version >= 1.40.0)
   Required for the OQGraph storage engine
 * CURL
 * BZip2
 * LZ4 (required version >= 1.6)
 * LibLZMA
 * LZO
 * Snappy
 * BISON (required version >= 2.4)

-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/src/mariadb-11.8.3

执行make:

make -j $(nproc) && make install

总结编译过程:

# 安装依赖包
yum install -y cmake ncurses-devel systemd-devel

# 进入mariadb包解压的目录
cd mariadb-11.8.3/

# 执行cmake
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes

# 执行make
make -j $(nproc) && make install

2.4.4.8 openSUSE 15

进入mariadb包解压的目录:

cd mariadb-11.8.3/

安装cmake包:

zypper install -y cmake

执行cmake:

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at CMakeLists.txt:40 (PROJECT):
  No CMAKE_C_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
  the compiler, or to the compiler name if it is in the PATH. # 提示,通过设置环境变量 “CC” 或 CMake 缓存条目CMAKE_C_COMPILER到编译器,或者如果编译器名称在 PATH,需要安装gcc。


CMake Error at CMakeLists.txt:40 (PROJECT):
  No CMAKE_CXX_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
  to the compiler, or to the compiler name if it is in the PATH. # 提示,通过设置环境变量 “CXX” 或 CMake 缓存条目CMAKE_CXX_COMPILER完整路径添加到编译器,或者添加到编译器名称(如果它在 PATH 中),需要安装gcc-c++。


-- Configuring incomplete, errors occurred!

安装gcc和gcc-c++包:

zypper install -y gcc gcc-c++

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at cmake/ssl.cmake:150 (MESSAGE):
  Cannot find appropriate system libraries for SSL.  Use WITH_SSL=bundled to
  enable SSL support # 提示,找不到适当的系统库来支持SSL。使用WITH_SSL=bundled来启用SSL支持
Call Stack (most recent call first):
  CMakeLists.txt:425 (MYSQL_CHECK_SSL)


-- Configuring incomplete, errors occurred!

安装libopenssl-devel包:

zypper install -y libopenssl-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:233 (message):
  Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH) # 提示,找不到 Curses 库。
Call Stack (most recent call first):
  /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:603 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake/Modules/FindCurses.cmake:268 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  cmake/readline.cmake:55 (FIND_PACKAGE)
  cmake/readline.cmake:188 (FIND_CURSES)
  CMakeLists.txt:427 (MYSQL_CHECK_READLINE)


-- Configuring incomplete, errors occurred!

安装ncurses-devel:

zypper install -y ncurses-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at cmake/pcre.cmake:99 (MESSAGE):
  system pcre2-8 library is not found or unusable # 提示,系统pcre2-8库找不到或不可用
Call Stack (most recent call first):
  CMakeLists.txt:431 (CHECK_PCRE)


-- Configuring incomplete, errors occurred!

安装pcre2-devel包:

zypper install -y pcre2-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at cmake/systemd.cmake:77 (MESSAGE):
  Requested WITH_SYSTEMD=yes however no dependencies installed/found
Call Stack (most recent call first): # 请求的WITH_SYSTEMD=是,但未安装/找到依赖项调用堆栈(最近的调用优先)
  CMakeLists.txt:434 (CHECK_SYSTEMD)


-- Configuring incomplete, errors occurred!

安装systemd-devel包:

zypper install -y systemd-devel

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
# 编译完成后会有类似如下的输出
-- The following OPTIONAL packages have not been found:

 * LibXml2
 * Java (required version >= 1.6)
   Required for the CONNECT_JDBC feature
 * JNI
   Required for the CONNECT_JDBC feature
 * Boost (required version >= 1.40.0)
   Required for the OQGraph storage engine
 * GSSAPI
 * CURL
 * BZip2
 * LZ4 (required version >= 1.6)
 * LibLZMA
 * LZO
 * Snappy
 * BISON (required version >= 2.4)

-- Configuring done (53.3s)
-- Generating done (0.7s)
-- Build files have been written to: /usr/local/src/mariadb-11.8.3

执行make:

make -j $(nproc) && make install

总结编译过程:

# 安装依赖包
zypper install -y cmake gcc gcc-c++ libopenssl-devel ncurses-devel pcre2-devel systemd-devel

# 进入mariadb包解压的目录
cd mariadb-11.8.3/

# 执行cmake
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes

# 执行make
make -j $(nproc) && make install

2.4.4.9 Ubuntu Server 20.04/22.04/24.04 LTS、Debian 11/12/13

进入mariadb包解压的目录:

cd mariadb-11.8.3/

安装cmake包:

apt update
apt install -y cmake

执行cmake:

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at CMakeLists.txt:40 (PROJECT):
  No CMAKE_CXX_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
  to the compiler, or to the compiler name if it is in the PATH. # 提示,通过设置环境变量 “CXX” 或 CMake 缓存条目CMAKE_CXX_COMPILER完整路径添加到编译器,或者添加到编译器名称(如果它在 PATH 中),需要安装gcc-c++。


-- Configuring incomplete, errors occurred!

安装g++包:

apt install -y g++

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at cmake/ssl.cmake:150 (MESSAGE):
  Cannot find appropriate system libraries for SSL.  Use WITH_SSL=bundled to
  enable SSL support # 提示,找不到适当的系统库来支持SSL。使用WITH_SSL=bundled来启用SSL支持
Call Stack (most recent call first):
  CMakeLists.txt:425 (MYSQL_CHECK_SSL)


-- Configuring incomplete, errors occurred!

安装libssl-dev包:

apt install -y libssl-dev

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:233 (message):
  Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH) # 提示,找不到 Curses 库。
Call Stack (most recent call first):
  /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:603 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake/Modules/FindCurses.cmake:268 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  cmake/readline.cmake:55 (FIND_PACKAGE)
  cmake/readline.cmake:188 (FIND_CURSES)
  CMakeLists.txt:427 (MYSQL_CHECK_READLINE)


-- Configuring incomplete, errors occurred!

安装libncurses5-dev包:

apt install -y libncurses5-dev

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at cmake/pcre.cmake:99 (MESSAGE):
  system pcre2-8 library is not found or unusable # 提示,系统pcre2-8库找不到或不可用
Call Stack (most recent call first):
  CMakeLists.txt:431 (CHECK_PCRE)


-- Configuring incomplete, errors occurred!

安装libpcre2-dev包:

apt install -y libpcre2-dev

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at cmake/systemd.cmake:77 (MESSAGE):
  Requested WITH_SYSTEMD=yes however no dependencies installed/found
Call Stack (most recent call first): # 请求的WITH_SYSTEMD=是,但未安装/找到依赖项调用堆栈(最近的调用优先)
  CMakeLists.txt:434 (CHECK_SYSTEMD)


-- Configuring incomplete, errors occurred!

安装libsystemd-dev包:

apt install -y libsystemd-dev

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
# 编译完成后会有类似如下的输出
-- The following OPTIONAL packages have not been found:

 * ZLIB
 * LibXml2
 * Java (required version >= 1.6)
   Required for the CONNECT_JDBC feature
 * JNI
   Required for the CONNECT_JDBC feature
 * Boost (required version >= 1.40.0)
   Required for the OQGraph storage engine
 * GSSAPI
 * CURL
 * BZip2
 * LZ4 (required version >= 1.6)
 * LibLZMA
 * LZO
 * Snappy
 * BISON (required version >= 2.4)

-- Configuring done (66.3s)
-- Generating done (0.7s)
-- Build files have been written to: /usr/local/src/mariadb-11.8.3

执行make:

make -j $(nproc) && make install

总结编译过程:

# 安装依赖包
apt update
apt install -y cmake g++ libssl-dev libncurses5-dev libpcre2-dev libsystemd-dev

# 进入mariadb包解压的目录
cd mariadb-11.8.3/

# 执行cmake
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes

# 执行make
make -j $(nproc) && make install

2.4.4.10 Ubuntu Server 18.04 LTS

进入mariadb包解压的目录:

cd mariadb-11.8.3/

安装cmake包:

apt update
apt install -y cmake

执行cmake:

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at CMakeLists.txt:17 (CMAKE_MINIMUM_REQUIRED):
  CMake 3.12.0 or higher is required.  You are running version 3.10.2 # 需要CMake 3.12.0或更高版本。您运行的是3.10.2版本


-- Configuring incomplete, errors occurred!

安装cmake:

去“https://cmake.org/download/”网址下载cmake二进制包,如图12所示。

t12

图12 下载cmake二进制包

# 卸载cmake
apt remove -y cmake

cd ..

# github下载地址:
wget https://github.com/Kitware/CMake/releases/download/v3.31.7/cmake-3.31.7-linux-x86_64.tar.gz

# 国内下载地址:
wget https://cmake.org/files/v3.31/cmake-3.31.7-linux-x86_64.tar.gz
tar xf cmake-3.31.7-linux-x86_64.tar.gz -C /usr/local/
ln -s /usr/local/cmake-3.31.7-linux-x86_64/bin/cmake /usr/bin/

root@ubuntu1804:/usr/local/src# cmake --version
cmake version 3.31.7

CMake suite maintained and supported by Kitware (kitware.com/cmake).

再次进入mariadb包解压的目录:

cd mariadb-10.11.14/

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at CMakeLists.txt:40 (PROJECT):
  No CMAKE_CXX_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
  to the compiler, or to the compiler name if it is in the PATH. # 提示,通过设置环境变量 “CXX” 或 CMake 缓存条目CMAKE_CXX_COMPILER完整路径添加到编译器,或者添加到编译器名称(如果它在 PATH 中),需要安装gcc-c++。


-- Configuring incomplete, errors occurred!

安装g++包:

apt install -y g++

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at cmake/ssl.cmake:150 (MESSAGE):
  Cannot find appropriate system libraries for SSL.  Use WITH_SSL=bundled to
  enable SSL support # 提示,找不到适当的系统库来支持SSL。使用WITH_SSL=bundled来启用SSL支持
Call Stack (most recent call first):
  CMakeLists.txt:425 (MYSQL_CHECK_SSL)


-- Configuring incomplete, errors occurred!

安装libssl-dev包:

apt install -y libssl-dev

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:233 (message):
  Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH) # 提示,找不到 Curses 库。
Call Stack (most recent call first):
  /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:603 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake/Modules/FindCurses.cmake:268 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  cmake/readline.cmake:55 (FIND_PACKAGE)
  cmake/readline.cmake:188 (FIND_CURSES)
  CMakeLists.txt:427 (MYSQL_CHECK_READLINE)


-- Configuring incomplete, errors occurred!

安装libncurses5-dev包:

apt install -y libncurses5-dev

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at cmake/pcre.cmake:99 (MESSAGE):
  system pcre2-8 library is not found or unusable # 提示,系统pcre2-8库找不到或不可用
Call Stack (most recent call first):
  CMakeLists.txt:431 (CHECK_PCRE)


-- Configuring incomplete, errors occurred!

安装libpcre2-dev包:

apt install -y libpcre2-dev

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
CMake Error at cmake/systemd.cmake:77 (MESSAGE):
  Requested WITH_SYSTEMD=yes however no dependencies installed/found
Call Stack (most recent call first): # 请求的WITH_SYSTEMD=是,但未安装/找到依赖项调用堆栈(最近的调用优先)
  CMakeLists.txt:434 (CHECK_SYSTEMD)


-- Configuring incomplete, errors occurred!

安装libsystemd-dev包:

apt install -y libsystemd-dev

继续执行cmake:

# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt

cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes
...
# 编译完成后会有类似如下的输出
-- The following OPTIONAL packages have not been found:

 * ZLIB
 * LibXml2
 * Java (required version >= 1.6)
   Required for the CONNECT_JDBC feature
 * JNI
   Required for the CONNECT_JDBC feature
 * Boost (required version >= 1.40.0)
   Required for the OQGraph storage engine
 * GSSAPI
 * CURL
 * BZip2
 * LZ4 (required version >= 1.6)
 * LibLZMA
 * LZO
 * Snappy
 * BISON (required version >= 2.4)

-- Configuring done (66.3s)
-- Generating done (0.7s)
-- Build files have been written to: /usr/local/src/mariadb-11.8.3

执行make:

make -j $(nproc) && make install

总结编译过程:

# 安装依赖包
apt update
apt install -y g++ libssl-dev libncurses5-dev libpcre2-dev libsystemd-dev

# 安装cmake
wget https://cmake.org/files/v3.31/cmake-3.31.7-linux-x86_64.tar.gz
tar xf cmake-3.31.7-linux-x86_64.tar.gz -C /usr/local/
ln -s /usr/local/cmake-3.31.7-linux-x86_64/bin/cmake /usr/bin/

# 进入mariadb包解压的目录
cd mariadb-11.8.3/

# 执行cmake
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mariadb \
-DMYSQL_DATADIR=/data/mariadb/ \
-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_PCRE=system \
-DWITH_BOOST=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mariadb/mariadb.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SYSTEMD=yes

# 执行make
make -j $(nproc) && make install

2.4.5 准备环境变量

echo 'PATH=/apps/mariadb/bin:$PATH' > /etc/profile.d/mariadb.sh
. /etc/profile.d/mariadb.sh

chown -R mysql:mysql /apps/mariadb/

2.4.6 生成数据库文件

# 这里必须先要进入/apps/mariadb/目录,在执行下面命令
cd /apps/mariadb/
./scripts/mariadb-install-db --datadir=/data/mariadb/ --user=mysql

2.4.7 准备配置文件

cat > /etc/my.cnf <<EOF
[mariadb]
basedir=/apps/mariadb/
datadir=/data/mariadb
port=3306
socket=/data/mariadb/mariadb.sock
pid-file=/data/mariadb/mariadb.pid 
log-error=/data/mariadb/mariadb.log

[client]
port=3306
socket=/data/mariadb/mariadb.sock
EOF

2.4.8 准备启动脚本并启动服务

# Rocky、Almalinux、CentOS、openEuler、AnolisOS、OpenCloudOS、 Kylin Server、UOS Server、openSUSE
cp /apps/mariadb/support-files/systemd/mariadb.service /usr/lib/systemd/system/

# Ubuntu和Debian
cp /apps/mariadb/support-files/systemd/mariadb.service /lib/systemd/system/

systemctl daemon-reload && systemctl enable --now mariadb

2.4.9 安全初始化

[root@rocky10 mariadb]# mariadb
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 11.8.3-MariaDB Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> status
--------------
mariadb from 11.8.3-MariaDB, client 15.2 for Linux (x86_64) using readline 5.1

Connection id:        3
Current database:    
Current user:        root@localhost
SSL:            Cipher in use is TLS_AES_256_GCM_SHA384, cert is OK
Current pager:        stdout
Using outfile:        ''
Using delimiter:    ;
Server:            MariaDB
Server version:        11.8.3-MariaDB Source distribution
Protocol version:    10
Connection:        Localhost via UNIX socket
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    utf8mb4
Conn.  characterset:    utf8mb4
UNIX socket:        /data/mariadb/mariadb.sock
Uptime:            9 sec

Threads: 1  Questions: 4  Slow queries: 0  Opens: 17  Open tables: 10  Queries per second avg: 0.444
--------------

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               | # 有test数据库
+--------------------+
5 rows in set (0.001 sec)

MariaDB [(none)]> select user,host from mysql.user;
+-------------+-----------+
| User        | Host      |
+-------------+-----------+
| PUBLIC      |           |
|             | localhost | # 有匿名用户 
| mariadb.sys | localhost |
| mysql       | localhost |
| root        | localhost |
|             | rocky10   | # 有远程登陆用户
+-------------+-----------+
6 rows in set (0.002 sec)

MariaDB [(none)]> exit
Bye

# 有test数据库、匿名用户和远程登录用户,需要安全初始化
[root@rocky10 mariadb]# mariadb-secure-installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):  # 输入 root 的当前密码(不输入),直接敲回车
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] y # 输入y,切换到 unix_socket 身份验证
Enabled successfully!
Reloading privilege tables..
 ... Success!


You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] n # 输入n,不设置root密码
 ... skipping.

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.

Remove anonymous users? [Y/n] y # 输入y,移除匿名账户
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y # 输入y,禁止 root 远程登录
 ... Success!

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.

Remove test database and access to it? [Y/n] y # 输入y,移除测试库
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y y # 输入y,重新加载权限表
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

2.4.10 登录测试

[root@rocky10 mariadb]# mariadb
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 13
Server version: 11.8.3-MariaDB Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> status
--------------
mariadb from 11.8.3-MariaDB, client 15.2 for Linux (x86_64) using readline 5.1

Connection id:        3
Current database:    
Current user:        root@localhost
SSL:            Cipher in use is TLS_AES_256_GCM_SHA384, cert is OK
Current pager:        stdout
Using outfile:        ''
Using delimiter:    ;
Server:            MariaDB
Server version:        11.8.3-MariaDB Source distribution
Protocol version:    10
Connection:        Localhost via UNIX socket
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    utf8mb4
Conn.  characterset:    utf8mb4
UNIX socket:        /data/mariadb/mariadb.sock
Uptime:            9 sec

Threads: 1  Questions: 4  Slow queries: 0  Opens: 17  Open tables: 10  Queries per second avg: 0.444
--------------

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.001 sec)
# 可以看到已经没有test数据库了

MariaDB [(none)]> select user,host from mysql.user;
+-------------+-----------+
| User        | Host      |
+-------------+-----------+
| PUBLIC      |           |
| mariadb.sys | localhost |
| mysql       | localhost |
| root        | localhost |
+-------------+-----------+
4 rows in set (0.001 sec)
# 可以看到已经没有匿名用户和远程登录用户了

MariaDB [(none)]> exit
Bye

2.4.11 一键安装MariaDB源码编译的脚本

Shell脚本源码地址:

Gitee:https://gitee.com/raymond9/shell

Github:https://github.com/raymond999999/shell

可以去上面的Gitee或Github代码仓库拉取脚本。

[root@rocky10 ~]# cat install_mariadb_source_v2.sh 
#!/bin/bash
#
#**********************************************************************************
#Author:        Raymond
#QQ:            88563128
#MP:            Raymond运维
#Date:          2025-09-15
#FileName:      install_mariadb_source_v3.sh
#URL:           https://wx.zsxq.com/group/15555885545422
#Description:   The mariadb source script install supports 
#               “Rocky Linux 8, 9 and 10, Almalinux 8, 9 and 10, CentOS 7, 
#               CentOS Stream 8, 9 and 10, openEuler 22.03 and 24.03 LTS, 
#               AnolisOS 8 and 23, OpencloudOS 8 and 9, Kylin Server v10 and v11, 
#               UOS Server v20, Ubuntu Server 18.04, 20.04, 22.04 and 24.04 LTS,  
#               Debian 11 , 12 and 13, openSUSE 15“ operating systems.
#Copyright (C): 2025 All rights reserved
#**********************************************************************************
COLOR="echo -e \\033[01;31m"
END='\033[0m'

os(){
   
    . /etc/os-release
    MAIN_NAME=`sed -rn '/^NAME=/s@.*="([[:alpha:]]+).*"$@\1@p' /etc/os-release`
    if [ ${MAIN_NAME} == "Kylin" ];then
        MAIN_VERSION_ID=`sed -rn '/^VERSION_ID=/s@.*="([[:alpha:]]+)(.*)"$@\2@p' /etc/os-release`
    else
        MAIN_VERSION_ID=`sed -rn '/^VERSION_ID=/s@.*="?([0-9]+)\.?.*"?@\1@p' /etc/os-release`
    fi
    if [ ${MAIN_NAME} == "Ubuntu" -o ${MAIN_NAME} == "Debian" ];then
        FULL_NAME="${PRETTY_NAME}"
    elif [ ${MAIN_NAME} == "UOS" ];then
        FULL_NAME="${NAME}"
    else
        FULL_NAME="${NAME} ${VERSION_ID}"
    fi
}

os
SRC_DIR=/usr/local/src
INSTALL_DIR=/apps/mariadb
DATA_DIR=/data/mariadb

# mariadb 11.8.3包下载地址:"https://mirrors.tuna.tsinghua.edu.cn/mariadb///mariadb-11.8.3/source/mariadb-11.8.3.tar.gz"
# fmt 11.1.4包下载地址:"https://gh-proxy.com/https://github.com/fmtlib/fmt/releases/download/11.1.4/fmt-11.1.4.zip"

# mariadb 10.11.14包下载地址:"https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-10.11.14/source/mariadb-10.11.14.tar.gz"
# fmt 11.0.2包下载地址:"https://gh-proxy.com/https://github.com/fmtlib/fmt/releases/download/11.0.2/fmt-11.0.2.zip"

if [ ${MAIN_NAME} == "CentOS" -a ${MAIN_VERSION_ID} == 7 ];then
    MARIADB_VERSION=10.11.14
    FMT_VERSION=11.0.2
else
    MARIADB_VERSION=11.8.3
    FMT_VERSION=11.1.4
fi
MARIADB_URL="https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-${MARIADB_VERSION}/source/"
MARIADB_FILE="mariadb-${MARIADB_VERSION}.tar.gz"

FMT_URL="https://gh-proxy.com/https://github.com/fmtlib/fmt/releases/download/${FMT_VERSION}/"
FMT_FILE="fmt-${FMT_VERSION}.zip"

CMAKE_URL='https://cmake.org/files/v3.31/'
CMAKE_FILE='cmake-3.31.7-linux-x86_64.tar.gz'

check_mysql_file(){
   
    if [ ${MAIN_NAME} == "Rocky" -o ${MAIN_NAME} == "AlmaLinux" -o ${MAIN_NAME} == "CentOS" -o ${MAIN_NAME} == "Anolis" -o ${MAIN_NAME} == "OpenCloudOS" -o ${MAIN_NAME} == "Kylin" ];then
        rpm -q wget &> /dev/null || {
    ${COLOR}"安装wget工具,请稍等......"${END};yum -y install wget &> /dev/null; }
    fi
    if [ ! -e ${MARIADB_FILE} ];then
        ${COLOR}"缺少${MARIADB_FILE}文件!"${END}
        ${COLOR}'开始下载MariaDB源码包......'${END}
        wget ${MARIADB_URL}${MARIADB_FILE} || {
    ${COLOR}"MariaDB源码包下载失败!"${END}; exit; }
    else
        ${COLOR}"${MARIADB_FILE}文件已准备好!"${END}
    fi
}

check_fmt_file(){
   
    if [ ! -e ${FMT_FILE} ];then
        ${COLOR}"缺少${FMT_FILE}文件!"${END}
        ${COLOR}'开始下载fmt包......'${END}
        wget ${FMT_URL}${FMT_FILE} || {
    ${COLOR}"fmt包下载失败!"${END}; exit; }
    else
        ${COLOR}"${FMT_FILE}相关文件已准备好!"${END}
    fi
}

check_cmake_file(){
   
    if [ ! -e ${CMAKE_FILE} ];then
        ${COLOR}"缺少${CMAKE_FILE}文件!"${END}
        ${COLOR}'开始下载cmake二进制包......'${END}
        wget ${CMAKE_URL}${CMAKE_FILE} || {
    ${COLOR}"cmake二进制包下载失败!"${END}; exit; }
    else
        ${COLOR}"${CMAKE_FILE}相关文件已准备好!"${END}
    fi
}

check_file(){
   
    cd  ${SRC_DIR}
    check_mysql_file
    check_fmt_file
    if [ ${MAIN_NAME} == "CentOS" -a ${MAIN_VERSION_ID} == 7 ];then
        check_cmake_file
    fi
    if [ ${MAIN_NAME} == "Ubuntu" -a ${MAIN_VERSION_ID} == 18 ];then
        check_cmake_file
    fi
}

install_cmake(){
   
    ${COLOR}'开始安装cmake,请稍等......'${END}
    tar xf ${CMAKE_FILE} -C /usr/local/
    CMAKE_DIR=`echo ${CMAKE_FILE}| sed -nr 's/^(.*[0-9]).*/\1/p'`
    ln -s /usr/local/${CMAKE_DIR}/bin/cmake /usr/bin/
}

install_mariadb(){
   
    [ -d ${INSTALL_DIR} ] && {
    ${COLOR}"MariaDB数据库已存在,安装失败!"${END};exit; }
    ${COLOR}"开始安装MariaDB数据库......"${END}
    if [ ${MAIN_NAME} == "openSUSE" ];then
        id mysql &> /dev/null || {
    groupadd -r mysql && useradd -s /sbin/nologin -d ${DATA_DIR} -r -g mysql mysql; ${COLOR}"成功创建mysql用户!"${END}; }
    else
        id mysql &> /dev/null || {
    useradd -r -s /sbin/nologin -d ${DATA_DIR} mysql ; ${COLOR}"成功创建mysql用户!"${END}; }
    fi
    [ -d ${DATA_DIR} ] || mkdir -p ${DATA_DIR} &> /dev/null
    chown -R mysql:mysql ${DATA_DIR}
    ${COLOR}'开始安装MariaDB依赖包,请稍等......'${END}
    if [ ${MAIN_NAME} == "Rocky" ];then
        if [ ${MAIN_VERSION_ID} == 8 ];then
            yum install -y cmake gcc gcc-c++ openssl-devel ncurses-devel systemd-devel &> /dev/null
        else
            yum install -y cmake gcc gcc-c++ openssl-devel ncurses-devel pcre2-devel systemd-devel &> /dev/null
        fi
    fi
    if [ ${MAIN_NAME} == "AlmaLinux" ];then
        if [ ${MAIN_VERSION_ID} == 8 ];then
            yum install -y cmake gcc gcc-c++ openssl-devel ncurses-devel systemd-devel &> /dev/null
        else
            yum install -y cmake gcc gcc-c++ openssl-devel ncurses-devel pcre2-devel systemd-devel &> /dev/null
        fi
    fi

    if [ ${MAIN_NAME} == "CentOS" ];then
        if [ ${MAIN_VERSION_ID} == 7 ];then
            yum install -y gcc gcc-c++ openssl-devel ncurses-devel pcre2-devel systemd-devel &> /dev/null
        elif [ ${MAIN_VERSION_ID} == 8 ];then
            yum install -y cmake gcc gcc-c++ openssl-devel ncurses-devel systemd-devel &> /dev/null
        else
            yum install -y cmake openssl-devel ncurses-devel pcre2-devel systemd-devel &> /dev/null
        fi
    fi
    if [ ${MAIN_NAME} == "openEuler" ];then
        if [ ${MAIN_VERSION_ID} == 22 ];then
            yum install -y cmake make gcc gcc-c++ openssl-devel ncurses-devel systemd-devel &> /dev/null
        else
            yum install -y cmake make gcc gcc-c++ openssl-devel ncurses-devel pcre2-devel systemd-devel &> /dev/null
        fi
    fi
    if [ ${MAIN_NAME} == "Anolis" ];then
        if [ ${MAIN_VERSION_ID} == 8 ];then
            yum install -y cmake gcc gcc-c++ openssl-devel ncurses-devel systemd-devel &> /dev/null
        else
            yum install -y cmake gcc gcc-c++ openssl-devel ncurses-devel pcre2-devel systemd-devel &> /dev/null
        fi
    fi
    if [ ${MAIN_NAME} == 'OpenCloudOS' ];then
        if [ ${MAIN_VERSION_ID} == 8 ];then
            yum install -y cmake gcc gcc-c++ openssl-devel ncurses-devel systemd-devel &> /dev/null
        else
            yum install -y cmake gcc gcc-c++ openssl-devel ncurses-devel pcre2-devel systemd-devel &> /dev/null
        fi
    fi
    if [ ${MAIN_NAME} == "Kylin" ];then
        if [ ${MAIN_VERSION_ID} == 10 ];then
            yum install -y cmake make gcc gcc-c++ openssl-devel ncurses-devel systemd-devel &> /dev/null
        else
            yum install -y cmake make gcc gcc-c++ openssl-devel ncurses-devel pcre2-devel systemd-devel &> /dev/null
        fi
    fi
    if [ ${MAIN_NAME} == "UOS" ];then
        if [ ${MAIN_VERSION_ID} == 20 ];then
            yum install -y cmake ncurses-devel systemd-devel &> /dev/null
        fi
    fi
    if [ ${MAIN_NAME} == "openSUSE" ];then
        if [ ${MAIN_VERSION_ID} == 15 ];then
            zypper install -y cmake gcc gcc-c++ libopenssl-devel ncurses-devel pcre2-devel systemd-devel &> /dev/null
        fi
    fi
    if [ ${MAIN_NAME} == "Ubuntu" ];then
        if [ ${MAIN_VERSION_ID} == 18 ];then
            apt update && apt install -y g++ libssl-dev libncurses5-dev libpcre2-dev libsystemd-dev
        else
            apt update && apt install -y cmake g++ libssl-dev libncurses5-dev libpcre2-dev libsystemd-dev
        fi
    fi
    if [ ${MAIN_NAME} == 'Debian' ];then
        apt update && apt install -y cmake g++ libssl-dev libncurses5-dev libpcre2-dev libsystemd-dev
    fi
    if [ ${MAIN_NAME} == "CentOS" -a ${MAIN_VERSION_ID} == 7 ];then
        install_cmake
    fi
    if [ ${MAIN_NAME} == 'Ubuntu' -a ${MAIN_VERSION_ID} == 18 ];then
        install_cmake
    fi
    ${COLOR}'开始编译安装MariaDB,请稍等......'${END}
    cd  ${SRC_DIR}
    if [ ${MAIN_NAME} == "openEuler" ];then
        if [ ${MAIN_VERSION_ID} == 22 -o ${MAIN_VERSION_ID} == 24 ];then
            yum install -y tar &> /dev/null
        fi
    fi
    if [ ${MAIN_NAME} == "Anolis" ];then
        if [ ${MAIN_VERSION_ID} == 23 ];then
            yum install -y tar &> /dev/null
        fi
    fi
    if [ ${MAIN_NAME} == "OpenCloudOS" ];then
        if [ ${MAIN_VERSION_ID} == 9 ];then
            yum install -y tar &> /dev/null
        fi
    fi
    tar xf ${MARIADB_FILE}
    MARIADB_DIR=`echo ${MARIADB_FILE}| sed -nr 's/^(.*[0-9]).*/\1/p'`
    mkdir -p /usr/local/src/${MARIADB_DIR}/extra/libfmt/src/
    mv ${FMT_FILE} /usr/local/src/${MARIADB_DIR}/extra/libfmt/src/
    cd ${MARIADB_DIR}
    cmake . \
    -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \
    -DMYSQL_DATADIR=${DATA_DIR}/ \
    -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_PCRE=system \
    -DWITH_BOOST=system \
    -DWITH_LIBWRAP=0 \
    -DENABLED_LOCAL_INFILE=1 \
    -DMYSQL_UNIX_ADDR=${DATA_DIR}/mariadb.sock \
    -DDEFAULT_CHARSET=utf8mb4 \
    -DDEFAULT_COLLATION=utf8mb4_general_ci \
    -DWITH_SYSTEMD=yes
    make -j $(nproc) && make install
    [ $? -eq 0 ] && ${COLOR}"MariaDB编译安装成功"${END} ||  {
    ${COLOR}"MariaDB编译安装失败,退出!"${END};exit; }
    echo 'PATH='${INSTALL_DIR}'/bin:$PATH' > /etc/profile.d/mariadb.sh
    .  /etc/profile.d/mariadb.sh
    chown -R mysql:mysql ${INSTALL_DIR}
    cd ${INSTALL_DIR}
    ./scripts/mysql_install_db --datadir=${DATA_DIR} --user=mysql
    cat > /etc/my.cnf <<-EOF
[mariadb]
basedir=${INSTALL_DIR}/
datadir=${DATA_DIR}
port=3306
socket=${DATA_DIR}/mariadb.sock
pid-file=${DATA_DIR}/mariadb.pid 
log-error=${DATA_DIR}/mariadb.log

[client]
port=3306
socket=${DATA_DIR}/mariadb.sock
EOF
    if [ ${MAIN_NAME} == "Ubuntu" -o ${MAIN_NAME} == "Debian" ];then
        cp ${INSTALL_DIR}/support-files/systemd/mariadb.service /lib/systemd/system/
    else
        cp ${INSTALL_DIR}/support-files/systemd/mariadb.service /usr/lib/systemd/system/
    fi 
    systemctl daemon-reload && systemctl enable --now mariadb &> /dev/null
    [ $? -ne 0 ] && {
    ${COLOR}"数据库启动失败,退出!"${END};exit; }
}

mariadb_secure(){
   
    ${INSTALL_DIR}/bin/mariadb-secure-installation <<EOF

y
n
y
y
y
y
EOF
    ${COLOR}"${FULL_NAME}操作系统,MariaDB数据库安装完成!"${END}
}

main(){
   
    check_file
    install_mariadb
    mariadb_secure
}

if [ ${MAIN_NAME} == "Rocky" ];then
    if [ ${MAIN_VERSION_ID} == 8 -o ${MAIN_VERSION_ID} == 9 -o ${MAIN_VERSION_ID} == 10 ];then
        main
    fi
elif [ ${MAIN_NAME} == "AlmaLinux" ];then
    if [ ${MAIN_VERSION_ID} == 8 -o ${MAIN_VERSION_ID} == 9 -o ${MAIN_VERSION_ID} == 10 ];then
        main
    fi
elif [ ${MAIN_NAME} == "CentOS" ];then
    if [ ${MAIN_VERSION_ID} == 7 -o ${MAIN_VERSION_ID} == 8 -o ${MAIN_VERSION_ID} == 9 -o ${MAIN_VERSION_ID} == 10 ];then
        main
    fi
elif [ ${MAIN_NAME} == "openEuler" ];then
    if [ ${MAIN_VERSION_ID} == 22 -o ${MAIN_VERSION_ID} == 24 ];then
        main
    fi
elif [ ${MAIN_NAME} == "Anolis" ];then
    if [ ${MAIN_VERSION_ID} == 8 -o ${MAIN_VERSION_ID} == 23 ];then
        main
    fi
elif [ ${MAIN_NAME} == 'OpenCloudOS' ];then
    if [ ${MAIN_VERSION_ID} == 8 -o ${MAIN_VERSION_ID} == 9 ];then
        main
    fi
elif [ ${MAIN_NAME} == "Kylin" ];then
    if [ ${MAIN_VERSION_ID} == 10 -o ${MAIN_VERSION_ID} == 11 ];then
        main
    fi
elif [ ${MAIN_NAME} == "UOS" ];then
    if [ ${MAIN_VERSION_ID} == 20 ];then
        main
    fi
elif [ ${MAIN_NAME} == "openSUSE" ];then
    if [ ${MAIN_VERSION_ID} == 15 ];then
        main
    fi
elif [ ${MAIN_NAME} == "Ubuntu" ];then
    if [ ${MAIN_VERSION_ID} == 18 -o ${MAIN_VERSION_ID} == 20 -o ${MAIN_VERSION_ID} == 22 -o ${MAIN_VERSION_ID} == 24 ];then
        main
    fi
elif [ ${MAIN_NAME} == 'Debian' ];then
    if [ ${MAIN_VERSION_ID} == 11 -o ${MAIN_VERSION_ID} == 12 -o ${MAIN_VERSION_ID} == 13 ];then
        main
    fi
else
    ${COLOR}"此脚本不支持${FULL_NAME}操作系统!"${END}
fi
相关文章
|
Ubuntu 安全 关系型数据库
MariaDB二进制包安装
本教程详细介绍了在多种Linux发行版上二进制安装MariaDB的步骤,包括创建专用用户、下载并解压程序文件、配置环境变量与服务文件、初始化数据库、设置安全策略等内容,并提供了一键安装脚本,适用于Rocky、CentOS、Ubuntu、Debian等多个系统,帮助用户快速完成MariaDB的部署与初始化配置。
785 2
MariaDB二进制包安装
|
存储 NoSQL 关系型数据库
MariaDB 在Linux下的安装部署
MariaDB 在Linux下的安装部署
MariaDB 在Linux下的安装部署
|
Ubuntu Linux KVM
分享一些OpenStack的qcow2格式实例镜像
分享一些OpenStack的qcow2格式实例镜像
17099 1
分享一些OpenStack的qcow2格式实例镜像
|
Linux 开发者
Red Hat Subscription 开发者订阅与激活订阅
使用命令时会出现以提示,命令不可正常使用。 根据提示信息,我们可以知道,需要通过Red Hat Subscription,开发者订阅。 进入开发者页面 https://developers.redhat.com/products/rhel/download,下滑看到No-cost RHEL for developers subscription 面向开发人员的免费 RHEL 订阅,选择Activate your subscription 激活你的订阅;
4589 1
|
SQL JavaScript 前端开发
VUE3(三十二)vue使用xlsx解析excel文件
工作中发现了一个比较有意思的前端插件xlsx,可以解析excel文件。 之前上传excel文件一般前端只负责文件上传,文件上传成功之后在后端进行解析,后端解析excel的时候使用的是phpexcel,也还是挺方便的
1461 0
|
关系型数据库 数据库 PostgreSQL
PostgreSQL 内存表可选项 - unlogged table
标签 PostgreSQL , 内存表 , unlogged table 背景 内存表,通常被用于不需要持久化,变更频繁,访问RT低的场景。 目前社区版本PostgreSQL没有内存表的功能,postgrespro提供了两个插件可以实现类似内存表的功能。
4175 0
|
5月前
|
Ubuntu 关系型数据库 MySQL
MySQL二进制包安装
本文详细介绍了在多种Linux系统上通过二进制包安装MySQL 8.0和8.4版本的完整过程,涵盖用户创建、glibc版本匹配、程序解压、环境变量配置、初始化数据库及服务启动等步骤,并提供支持多发行版的一键安装脚本,助力高效部署MySQL环境。
822 4
MySQL二进制包安装
|
关系型数据库 Linux 数据库
PostgreSQL源码编译安装
本节详细介绍了如何通过源码编译安装 PostgreSQL 17.6,涵盖从源码下载、依赖安装、配置编译参数、执行编译与安装、创建数据库用户与目录、初始化数据库,到配置 systemd 启动服务的完整流程。内容适用于多种 Linux 发行版,如 Rocky Linux、CentOS、openEuler、Ubuntu、Debian 等,并提供了常见错误的解决方法及一键安装脚本,帮助用户高效完成 PostgreSQL 的源码部署。
1116 0
PostgreSQL源码编译安装
|
存储 Ubuntu 关系型数据库
MariaDB介绍和MariaDB包安装
MariaDB是由MySQL原开发团队创建的开源关系型数据库,旨在提供更高的兼容性、性能优化及企业级功能。它支持多存储引擎、分布式集群、GIS及动态列等特性,适用于企业应用、互联网服务及大数据分析。安装时可通过系统自带仓库或官方资源库进行部署,适配多种Linux发行版,安装后建议进行安全初始化以提升安全性。
906 0
MariaDB介绍和MariaDB包安装