首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >MySQL 8.0源码编译安装(三)

MySQL 8.0源码编译安装(三)

原创
作者头像
Raymond运维
发布2025-09-22 23:25:31
发布2025-09-22 23:25:31
4010
举报
文章被收录于专栏:干货分享干货分享
2.4.1.4.11 Ubuntu Server 18.04 LTS

进入mysql包解压的目录:

代码语言:javascript
复制
1cd mysql-8.0.42/

安装cmake包:

代码语言:javascript
复制
1apt update
2aptinstall-y cmake

执行cmake:

代码语言:javascript
复制
1cmake .\
2-DCMAKE_INSTALL_PREFIX=/apps/mysql \
3-DMYSQL_DATADIR=/data/mysql/ \
4-DSYSCONFDIR=/etc/ \
5-DWITH_INNOBASE_STORAGE_ENGINE=1\
6-DWITH_ARCHIVE_STORAGE_ENGINE=1\
7-DWITH_BLACKHOLE_STORAGE_ENGINE=1\
8-DWITH_DEBUG=0\
9-DWITH_SSL=system \
10-DWITH_LIBWRAP=0\
11-DENABLED_LOCAL_INFILE=1\
12-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
13-DDEFAULT_CHARSET=utf8mb4 \
14-DDEFAULT_COLLATION=utf8mb4_general_ci \
15-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
16-DFORCE_INSOURCE_BUILD=1\
17-DWITH_SYSTEMD=1
18...
19CMake Error at CMakeLists.txt:110 (CMAKE_MINIMUM_REQUIRED):
20  CMake 3.11.2 or higher is required.  You are running version 3.10.2 # 需要 CMake 3.11.2 或更高版本。您运行的是版本 3.10.2。
21
22
23-- Configuring incomplete, errors occurred!

安装cmake:

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

t55
t55

图55 下载cmake二进制包

代码语言:javascript
复制
1# 卸载cmake
2apt remove -y cmake
3
4cd..
5
6# github下载地址:
7wget https://github.com/Kitware/CMake/releases/download/v3.31.7/cmake-3.31.7-linux-x86_64.tar.gz
8
9# 国内下载地址:
10wget https://cmake.org/files/v3.31/cmake-3.31.7-linux-x86_64.tar.gz
11tar xf cmake-3.31.7-linux-x86_64.tar.gz -C /usr/local/
12ln-s /usr/local/cmake-3.31.7-linux-x86_64/bin/cmake /usr/bin/
13
14root@ubuntu1804:/usr/local/src# cmake --version
15cmake version 3.31.7
16
17CMake suite maintained and supported by Kitware (kitware.com/cmake).

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

代码语言:javascript
复制
1cd mysql-8.0.42/

继续执行cmake:

代码语言:javascript
复制
1# 再次执行cmake之前先删除“CMakeCache.txt”文件
2rm-f CMakeCache.txt
3
4cmake .\
5-DCMAKE_INSTALL_PREFIX=/apps/mysql \
6-DMYSQL_DATADIR=/data/mysql/ \
7-DSYSCONFDIR=/etc/ \
8-DWITH_INNOBASE_STORAGE_ENGINE=1\
9-DWITH_ARCHIVE_STORAGE_ENGINE=1\
10-DWITH_BLACKHOLE_STORAGE_ENGINE=1\
11-DWITH_DEBUG=0\
12-DWITH_SSL=system \
13-DWITH_LIBWRAP=0\
14-DENABLED_LOCAL_INFILE=1\
15-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
16-DDEFAULT_CHARSET=utf8mb4 \
17-DDEFAULT_COLLATION=utf8mb4_general_ci \
18-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
19-DFORCE_INSOURCE_BUILD=1\
20-DWITH_SYSTEMD=1
21...
22CMake Warning:
23  No source or binary directory provided.  Both will be assumed to be the
24  same as the current working directory, but note that this warning will
25  become a fatal error in future CMake releases.
26
27
28-- Running cmake version 3.31.7
29-- Found Git: /usr/bin/git (found version "2.17.1")
30-- Looking for gcc-8 on Ubuntu 18.04
31CMake Warning at CMakeLists.txt:440 (MESSAGE):
32  Could not find gcc-8
33
34
35CMake Error at CMakeLists.txt:441 (MESSAGE):
36  Please do'apt install gcc-8 g++-8'# 提示,安装gcc-8和g++-8。
37
38  or set CMAKE_C_COMPILER and CMAKE_CXX_COMPILER explicitly.
39
40
41-- Configuring incomplete, errors occurred!

安装g++包:

代码语言:javascript
复制
1aptinstall-y gcc-8 g++-8

继续执行cmake:

代码语言:javascript
复制
1# 再次执行cmake之前先删除“CMakeCache.txt”文件
2rm-f CMakeCache.txt
3
4cmake .\
5-DCMAKE_INSTALL_PREFIX=/apps/mysql \
6-DMYSQL_DATADIR=/data/mysql/ \
7-DSYSCONFDIR=/etc/ \
8-DWITH_INNOBASE_STORAGE_ENGINE=1\
9-DWITH_ARCHIVE_STORAGE_ENGINE=1\
10-DWITH_BLACKHOLE_STORAGE_ENGINE=1\
11-DWITH_DEBUG=0\
12-DWITH_SSL=system \
13-DWITH_LIBWRAP=0\
14-DENABLED_LOCAL_INFILE=1\
15-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
16-DDEFAULT_CHARSET=utf8mb4 \
17-DDEFAULT_COLLATION=utf8mb4_general_ci \
18-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
19-DFORCE_INSOURCE_BUILD=1\
20-DWITH_SYSTEMD=1
21...
22Not a supported openssl version inWITH_SSL=system.
23Make sure you have specified a supported SSL version.
24Valid options are :
25openssl[0-9]+ (use alternative system library)
26yes(synonym for system)
27</path/to/custom/openssl/installation>
28
29CMake Error at cmake/ssl.cmake:84 (MESSAGE):
30  Please install the appropriate openssl developer package. # 提示,请安装相应的 openssl 开发人员软件包。
31
32Call Stack (most recent call first):
33  cmake/ssl.cmake:380 (FATAL_SSL_NOT_FOUND_ERROR)
34  CMakeLists.txt:1826 (MYSQL_CHECK_SSL)
35
36
37-- Configuring incomplete, errors occurred!

安装libssl-dev包:

代码语言:javascript
复制
1aptinstall-y libssl-dev

继续执行cmake:

代码语言:javascript
复制
1# 再次执行cmake之前先删除“CMakeCache.txt”文件
2rm-f CMakeCache.txt
3
4cmake .\
5-DCMAKE_INSTALL_PREFIX=/apps/mysql \
6-DMYSQL_DATADIR=/data/mysql/ \
7-DSYSCONFDIR=/etc/ \
8-DWITH_INNOBASE_STORAGE_ENGINE=1\
9-DWITH_ARCHIVE_STORAGE_ENGINE=1\
10-DWITH_BLACKHOLE_STORAGE_ENGINE=1\
11-DWITH_DEBUG=0\
12-DWITH_SSL=system \
13-DWITH_LIBWRAP=0\
14-DENABLED_LOCAL_INFILE=1\
15-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
16-DDEFAULT_CHARSET=utf8mb4 \
17-DDEFAULT_COLLATION=utf8mb4_general_ci \
18-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
19-DFORCE_INSOURCE_BUILD=1\
20-DWITH_SYSTEMD=1
21...
22CMake Error at cmake/readline.cmake:93 (MESSAGE):
23  Curses library not found.  Please install appropriate package,
24
25      remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel. # 提示,找不到 Curses 库。请安装合适的软件包,删除 CMakeCache.txt 并重新运行 cmake。在 Debian/Ubuntu 上,包名称是 libncurses5-dev,在 Redhat 及其衍生产品上是 ncurses-devel。
26Call Stack (most recent call first):
27  cmake/readline.cmake:127 (FIND_CURSES)
28  cmake/readline.cmake:221 (MYSQL_USE_BUNDLED_EDITLINE)
29  CMakeLists.txt:1930 (MYSQL_CHECK_EDITLINE)
30
31
32-- Configuring incomplete, errors occurred!

安装libncurses5-dev包:

代码语言:javascript
复制
1aptinstall-y libncurses5-dev

继续执行cmake:

代码语言:javascript
复制
1# 再次执行cmake之前先删除“CMakeCache.txt”文件
2rm-f CMakeCache.txt
3
4cmake .\
5-DCMAKE_INSTALL_PREFIX=/apps/mysql \
6-DMYSQL_DATADIR=/data/mysql/ \
7-DSYSCONFDIR=/etc/ \
8-DWITH_INNOBASE_STORAGE_ENGINE=1\
9-DWITH_ARCHIVE_STORAGE_ENGINE=1\
10-DWITH_BLACKHOLE_STORAGE_ENGINE=1\
11-DWITH_DEBUG=0\
12-DWITH_SSL=system \
13-DWITH_LIBWRAP=0\
14-DENABLED_LOCAL_INFILE=1\
15-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
16-DDEFAULT_CHARSET=utf8mb4 \
17-DDEFAULT_COLLATION=utf8mb4_general_ci \
18-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
19-DFORCE_INSOURCE_BUILD=1\
20-DWITH_SYSTEMD=1
21...
22CMake Warning at cmake/pkg-config.cmake:30 (MESSAGE):
23  Cannot find pkg-config.  You need to install the required package: # 提示,找不到 pkg-config。您需要安装所需的软件包:
24
25    Debian/Ubuntu:              aptinstall pkg-config
26    RedHat/Fedora/Oracle Linux: yum install pkg-config
27    SuSE:                       zypperinstall pkg-config
28
29Call Stack (most recent call first):
30  cmake/rpc.cmake:62 (MYSQL_CHECK_PKGCONFIG)
31  CMakeLists.txt:2066 (MYSQL_CHECK_RPC)
32
33
34CMake Error at /usr/local/cmake-3.31.7-linux-x86_64/share/cmake-3.31/Modules/FindPackageHandleStandardArgs.cmake:233 (message):
35  Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
36Call Stack (most recent call first):
37  /usr/local/cmake-3.31.7-linux-x86_64/share/cmake-3.31/Modules/FindPackageHandleStandardArgs.cmake:603 (_FPHSA_FAILURE_MESSAGE)
38  /usr/local/cmake-3.31.7-linux-x86_64/share/cmake-3.31/Modules/FindPkgConfig.cmake:114 (find_package_handle_standard_args)
39  cmake/pkg-config.cmake:37 (FIND_PACKAGE)
40  cmake/rpc.cmake:62 (MYSQL_CHECK_PKGCONFIG)
41  CMakeLists.txt:2066 (MYSQL_CHECK_RPC)
42
43
44-- Configuring incomplete, errors occurred!
45

安装pkg-config包:

代码语言:javascript
复制
1aptinstall-y pkg-config

继续执行cmake:

代码语言:javascript
复制
1# 再次执行cmake之前先删除“CMakeCache.txt”文件
2rm-f CMakeCache.txt
3
4cmake .\
5-DCMAKE_INSTALL_PREFIX=/apps/mysql \
6-DMYSQL_DATADIR=/data/mysql/ \
7-DSYSCONFDIR=/etc/ \
8-DWITH_INNOBASE_STORAGE_ENGINE=1\
9-DWITH_ARCHIVE_STORAGE_ENGINE=1\
10-DWITH_BLACKHOLE_STORAGE_ENGINE=1\
11-DWITH_DEBUG=0\
12-DWITH_SSL=system \
13-DWITH_LIBWRAP=0\
14-DENABLED_LOCAL_INFILE=1\
15-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
16-DDEFAULT_CHARSET=utf8mb4 \
17-DDEFAULT_COLLATION=utf8mb4_general_ci \
18-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
19-DFORCE_INSOURCE_BUILD=1\
20-DWITH_SYSTEMD=1
21...
22-- Configuring done(22.4s)
23-- Generating done(3.6s)
24-- Build files have been written to: /usr/local/src/mysql-8.0.42

执行make:

代码语言:javascript
复制
1make-j$(nproc)&&makeinstall

总结编译过程:

代码语言:javascript
复制
1# 安装依赖包
2apt update
3aptinstall-y gcc-8 g++-8 libssl-dev libncurses5-dev pkg-config
4
5# 安装cmake
6wget https://github.com/Kitware/CMake/releases/download/v3.31.7/cmake-3.31.7-linux-x86_64.tar.gz
7tar xf cmake-3.31.7-linux-x86_64.tar.gz -C /usr/local/
8ln-s /usr/local/cmake-3.31.7-linux-x86_64/bin/cmake /usr/bin/
9
10# 进入mysql包解压的目录
11cd mysql-8.0.42/
12
13# 执行cmake
14cmake .\
15-DCMAKE_INSTALL_PREFIX=/apps/mysql \
16-DMYSQL_DATADIR=/data/mysql/ \
17-DSYSCONFDIR=/etc/ \
18-DWITH_INNOBASE_STORAGE_ENGINE=1\
19-DWITH_ARCHIVE_STORAGE_ENGINE=1\
20-DWITH_BLACKHOLE_STORAGE_ENGINE=1\
21-DWITH_DEBUG=0\
22-DWITH_SSL=system \
23-DWITH_LIBWRAP=0\
24-DENABLED_LOCAL_INFILE=1\
25-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
26-DDEFAULT_CHARSET=utf8mb4 \
27-DDEFAULT_COLLATION=utf8mb4_general_ci \
28-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
29-DFORCE_INSOURCE_BUILD=1\
30-DWITH_SYSTEMD=1
31
32# 执行make
33make-j$(nproc)&&makeinstall
2.4.1.4.12 Debian 13

进入mysql包解压的目录:

代码语言:javascript
复制
1cd mysql-8.0.42/

安装cmake包:

代码语言:javascript
复制
1apt update
2aptinstall-y cmake

执行cmake:

代码语言:javascript
复制
1cmake .\
2-DCMAKE_INSTALL_PREFIX=/apps/mysql \
3-DMYSQL_DATADIR=/data/mysql/ \
4-DSYSCONFDIR=/etc/ \
5-DWITH_INNOBASE_STORAGE_ENGINE=1\
6-DWITH_ARCHIVE_STORAGE_ENGINE=1\
7-DWITH_BLACKHOLE_STORAGE_ENGINE=1\
8-DWITH_DEBUG=0\
9-DWITH_SSL=system \
10-DWITH_LIBWRAP=0\
11-DENABLED_LOCAL_INFILE=1\
12-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
13-DDEFAULT_CHARSET=utf8mb4 \
14-DDEFAULT_COLLATION=utf8mb4_general_ci \
15-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
16-DFORCE_INSOURCE_BUILD=1\
17-DWITH_SYSTEMD=1
18...
19CMake Error at CMakeLists.txt:585 (PROJECT):
20  No CMAKE_CXX_COMPILER could be found.
21
22  Tell CMake where to find the compiler by setting either the environment
23  variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
24  to the compiler, or to the compiler name if it is in the PATH.# 通过设置环境变量 “CXX” 或 CMake 缓存条目CMAKE_CXX_COMPILER完整路径添加到编译器,或者添加到编译器名称(如果它在 PATH 中),需要安装g++。
25
26
27-- Configuring incomplete, errors occurred!

安装g++包:

代码语言:javascript
复制
1aptinstall-y g++

继续执行cmake:

代码语言:javascript
复制
1# 再次执行cmake之前先删除“CMakeCache.txt”文件
2rm-f CMakeCache.txt
3
4cmake .\
5-DCMAKE_INSTALL_PREFIX=/apps/mysql \
6-DMYSQL_DATADIR=/data/mysql/ \
7-DSYSCONFDIR=/etc/ \
8-DWITH_INNOBASE_STORAGE_ENGINE=1\
9-DWITH_ARCHIVE_STORAGE_ENGINE=1\
10-DWITH_BLACKHOLE_STORAGE_ENGINE=1\
11-DWITH_DEBUG=0\
12-DWITH_SSL=system \
13-DWITH_LIBWRAP=0\
14-DENABLED_LOCAL_INFILE=1\
15-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
16-DDEFAULT_CHARSET=utf8mb4 \
17-DDEFAULT_COLLATION=utf8mb4_general_ci \
18-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
19-DFORCE_INSOURCE_BUILD=1\
20-DWITH_SYSTEMD=1
21...
22CMake Error at cmake/ssl.cmake:84 (MESSAGE):
23  Please install the appropriate openssl developer package. # 提示,请安装相应的 openssl 开发人员软件包。
24
25Call Stack (most recent call first):
26  cmake/ssl.cmake:380 (FATAL_SSL_NOT_FOUND_ERROR)
27  CMakeLists.txt:1826 (MYSQL_CHECK_SSL)
28
29
30-- Configuring incomplete, errors occurred!

安装libssl-dev包:

代码语言:javascript
复制
1aptinstall-y libssl-dev

继续执行cmake:

代码语言:javascript
复制
1# 再次执行cmake之前先删除“CMakeCache.txt”文件
2rm-f CMakeCache.txt
3
4cmake .\
5-DCMAKE_INSTALL_PREFIX=/apps/mysql \
6-DMYSQL_DATADIR=/data/mysql/ \
7-DSYSCONFDIR=/etc/ \
8-DWITH_INNOBASE_STORAGE_ENGINE=1\
9-DWITH_ARCHIVE_STORAGE_ENGINE=1\
10-DWITH_BLACKHOLE_STORAGE_ENGINE=1\
11-DWITH_DEBUG=0\
12-DWITH_SSL=system \
13-DWITH_LIBWRAP=0\
14-DENABLED_LOCAL_INFILE=1\
15-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
16-DDEFAULT_CHARSET=utf8mb4 \
17-DDEFAULT_COLLATION=utf8mb4_general_ci \
18-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
19-DFORCE_INSOURCE_BUILD=1\
20-DWITH_SYSTEMD=1
21...
22CMake Error at cmake/readline.cmake:93 (MESSAGE):
23  Curses library not found.  Please install appropriate package,
24
25      remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel. d rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel. # 提示,找不到 Curses 库。请安装合适的软件包,删除 CMakeCache.txt 并重新运行 cmake。在 Debian/Ubuntu 上,包名称是 libncurses5-dev,在 Redhat 及其衍生产品上是 ncurses-devel。
26Call Stack (most recent call first):
27  cmake/readline.cmake:127 (FIND_CURSES)
28  cmake/readline.cmake:221 (MYSQL_USE_BUNDLED_EDITLINE)
29  CMakeLists.txt:1930 (MYSQL_CHECK_EDITLINE)
30
31
32-- Configuring incomplete, errors occurred!

安装libncurses5-dev包:

代码语言:javascript
复制
1aptinstall-y libncurses5-dev

继续执行cmake:

代码语言:javascript
复制
1# 再次执行cmake之前先删除“CMakeCache.txt”文件
2rm-f CMakeCache.txt
3
4cmake .\
5-DCMAKE_INSTALL_PREFIX=/apps/mysql \
6-DMYSQL_DATADIR=/data/mysql/ \
7-DSYSCONFDIR=/etc/ \
8-DWITH_INNOBASE_STORAGE_ENGINE=1\
9-DWITH_ARCHIVE_STORAGE_ENGINE=1\
10-DWITH_BLACKHOLE_STORAGE_ENGINE=1\
11-DWITH_DEBUG=0\
12-DWITH_SSL=system \
13-DWITH_LIBWRAP=0\
14-DENABLED_LOCAL_INFILE=1\
15-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
16-DDEFAULT_CHARSET=utf8mb4 \
17-DDEFAULT_COLLATION=utf8mb4_general_ci \
18-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
19-DFORCE_INSOURCE_BUILD=1\
20-DWITH_SYSTEMD=1
21...
22CMake Warning at cmake/pkg-config.cmake:30 (MESSAGE):
23  Cannot find pkg-config.  You need to install the required package: # 找不到 pkg-config。您需要安装所需的软件包:
24
25    Debian/Ubuntu:              aptinstall pkg-config
26    RedHat/Fedora/Oracle Linux: yum install pkg-config
27    SuSE:                       zypperinstall pkg-config
28
29Call Stack (most recent call first):
30  cmake/rpc.cmake:62 (MYSQL_CHECK_PKGCONFIG)
31  CMakeLists.txt:2066 (MYSQL_CHECK_RPC)
32
33
34CMake Error at /usr/share/cmake-3.31/Modules/FindPackageHandleStandardArgs.cmake:233 (message):
35  Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
36Call Stack (most recent call first):
37  /usr/share/cmake-3.31/Modules/FindPackageHandleStandardArgs.cmake:603 (_FPHSA_FAILURE_MESSAGE)
38  /usr/share/cmake-3.31/Modules/FindPkgConfig.cmake:114 (find_package_handle_standard_args)
39  cmake/pkg-config.cmake:37 (FIND_PACKAGE)
40  cmake/rpc.cmake:62 (MYSQL_CHECK_PKGCONFIG)
41  CMakeLists.txt:2066 (MYSQL_CHECK_RPC)
42
43
44-- Configuring incomplete, errors occurred!

安装pkg-config包:

代码语言:javascript
复制
1aptinstall-y pkg-config

继续执行cmake:

代码语言:javascript
复制
1# 再次执行cmake之前先删除“CMakeCache.txt”文件
2rm-f CMakeCache.txt
3
4cmake .\
5-DCMAKE_INSTALL_PREFIX=/apps/mysql \
6-DMYSQL_DATADIR=/data/mysql/ \
7-DSYSCONFDIR=/etc/ \
8-DWITH_INNOBASE_STORAGE_ENGINE=1\
9-DWITH_ARCHIVE_STORAGE_ENGINE=1\
10-DWITH_BLACKHOLE_STORAGE_ENGINE=1\
11-DWITH_DEBUG=0\
12-DWITH_SSL=system \
13-DWITH_LIBWRAP=0\
14-DENABLED_LOCAL_INFILE=1\
15-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
16-DDEFAULT_CHARSET=utf8mb4 \
17-DDEFAULT_COLLATION=utf8mb4_general_ci \
18-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
19-DFORCE_INSOURCE_BUILD=1\
20-DWITH_SYSTEMD=1
21...
22CMake Error at cmake/systemd.cmake:60 (MESSAGE):
23  Unable to detect systemd support on build machine, Aborting cmake build. # 无法在生成计算机上检测到systemd支持,正在中止cmake生成。
24Call Stack (most recent call first):
25  cmake/systemd.cmake:80 (MYSQL_CHECK_SYSTEMD)
26  CMakeLists.txt:1597 (INCLUDE)
27
28
29-- Configuring incomplete, errors occurred!

在编译参数里面删除下面内容:

代码语言:javascript
复制
1-DWITH_SYSTEMD=1

继续执行cmake:

代码语言:javascript
复制
1# 再次执行cmake之前先删除“CMakeCache.txt”文件
2rm-f CMakeCache.txt
3
4cmake .\
5-DCMAKE_INSTALL_PREFIX=/apps/mysql \
6-DMYSQL_DATADIR=/data/mysql/ \
7-DSYSCONFDIR=/etc/ \
8-DWITH_INNOBASE_STORAGE_ENGINE=1\
9-DWITH_ARCHIVE_STORAGE_ENGINE=1\
10-DWITH_BLACKHOLE_STORAGE_ENGINE=1\
11-DWITH_DEBUG=0\
12-DWITH_SSL=system \
13-DWITH_LIBWRAP=0\
14-DENABLED_LOCAL_INFILE=1\
15-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
16-DDEFAULT_CHARSET=utf8mb4 \
17-DDEFAULT_COLLATION=utf8mb4_general_ci \
18-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
19-DFORCE_INSOURCE_BUILD=1
20...
21CMake Warning at cmake/rpc.cmake:41 (MESSAGE):
22  Cannot find RPC development libraries.  You need to install the required
23  packages:
24
25    Debian/Ubuntu:              aptinstall libtirpc-dev
26    RedHat/Fedora/Oracle Linux: yum install libtirpc-devel
27    SuSE:                       zypperinstall glibc-devel
28
29Call Stack (most recent call first):
30  cmake/rpc.cmake:112 (WARN_MISSING_SYSTEM_TIRPC)
31  CMakeLists.txt:2066 (MYSQL_CHECK_RPC)
32
33
34CMake Error at cmake/rpc.cmake:113 (MESSAGE):
35  Could not find rpc/rpc.h in /usr/include or /usr/include/tirpc
36Call Stack (most recent call first):
37  CMakeLists.txt:2066 (MYSQL_CHECK_RPC)
38
39
40-- Configuring incomplete, errors occurred!

安装libtirpc-dev包:

代码语言:javascript
复制
1aptinstall-y libtirpc-dev

继续执行cmake:

代码语言:javascript
复制
1# 再次执行cmake之前先删除“CMakeCache.txt”文件
2rm-f CMakeCache.txt
3
4cmake .\
5-DCMAKE_INSTALL_PREFIX=/apps/mysql \
6-DMYSQL_DATADIR=/data/mysql/ \
7-DSYSCONFDIR=/etc/ \
8-DWITH_INNOBASE_STORAGE_ENGINE=1\
9-DWITH_ARCHIVE_STORAGE_ENGINE=1\
10-DWITH_BLACKHOLE_STORAGE_ENGINE=1\
11-DWITH_DEBUG=0\
12-DWITH_SSL=system \
13-DWITH_LIBWRAP=0\
14-DENABLED_LOCAL_INFILE=1\
15-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
16-DDEFAULT_CHARSET=utf8mb4 \
17-DDEFAULT_COLLATION=utf8mb4_general_ci \
18-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
19-DFORCE_INSOURCE_BUILD=1
20...
21-- Configuring done(47.7s)
22-- Generating done(3.8s)
23-- Build files have been written to: /usr/local/src/mysql-8.0.42

执行make:

代码语言:javascript
复制
1make-j$(nproc)&&makeinstall

总结编译过程:

代码语言:javascript
复制
1# 安装依赖包
2apt update
3aptinstall-y cmake g++ libssl-dev libncurses5-dev pkg-config libtirpc-dev
4
5# 进入mysql包解压的目录
6cd mysql-8.0.42/
7
8# 执行cmake
9cmake .\
10-DCMAKE_INSTALL_PREFIX=/apps/mysql \
11-DMYSQL_DATADIR=/data/mysql/ \
12-DSYSCONFDIR=/etc/ \
13-DWITH_INNOBASE_STORAGE_ENGINE=1\
14-DWITH_ARCHIVE_STORAGE_ENGINE=1\
15-DWITH_BLACKHOLE_STORAGE_ENGINE=1\
16-DWITH_DEBUG=0\
17-DWITH_SSL=system \
18-DWITH_LIBWRAP=0\
19-DENABLED_LOCAL_INFILE=1\
20-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
21-DDEFAULT_CHARSET=utf8mb4 \
22-DDEFAULT_COLLATION=utf8mb4_general_ci \
23-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
24-DFORCE_INSOURCE_BUILD=1
25
26# 执行make
27make-j$(nproc)&&makeinstall
2.4.1.5 准备环境变量
代码语言:javascript
复制
1echo'PATH=/apps/mysql/bin:$PATH'> /etc/profile.d/mysql.sh
2. /etc/profile.d/mysql.sh
3
4chown-R mysql:mysql /apps/mysql/
2.4.1.6 生成数据库文件
代码语言:javascript
复制
1# /data/mysql  会自动生成,但是/data/必须事先存在
2# --initialize会生成一个初始化密码,--initialize-insecure生成空密码,两种方式任选一种
3
4# 生成初始化密码
5mysqld --initialize--user=mysql --datadir=/data/mysql
62025-04-30T14:21:27.126347Z 0[System][MY-015017][Server] MySQL Server Initialization - start.
72025-04-30T14:21:27.130746Z 0[System][MY-013169][Server] /apps/mysql/bin/mysqld (mysqld 8.4.5) initializing of server in progress as process 45248
82025-04-30T14:21:27.133400Z 0[Warning][MY-013242][Server] --character-set-server: 'utf8' is currently an aliasfor the character set UTF8MB3, but will be an aliasforUTF8MB4in a future release. Please consider using UTF8MB4 in order to be unambiguous.
92025-04-30T14:21:27.133406Z 0[Warning][MY-013244][Server] --collation-server: 'utf8mb3_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
102025-04-30T14:21:27.151145Z 1[System][MY-013576][InnoDB] InnoDB initialization has started.
112025-04-30T14:21:27.413116Z 1[System][MY-013577][InnoDB] InnoDB initialization has ended.
122025-04-30T14:21:28.313966Z 6[Note][MY-010454][Server] A temporary password is generated for root@localhost: q&VUtowtA6!. # “q&VUtowtA6!.”这个就是初始化密码
132025-04-30T14:21:29.694317Z 0[System][MY-015018][Server] MySQL Server Initialization - end.
14
15# 生成空密码的root用户
16[root@rocky10 mysql-8.0.42]# mysqld --initialize-insecure --user=mysql --basedir=/apps/mysql --datadir=/data/mysql
172025-09-14T07:05:24.567323Z 0[System][MY-013169][Server] /apps/mysql/bin/mysqld (mysqld 8.0.42) initializing of server in progress as process 47824
182025-09-14T07:05:24.592387Z 1[System][MY-013576][InnoDB] InnoDB initialization has started.
192025-09-14T07:05:24.790320Z 1[System][MY-013577][InnoDB] InnoDB initialization has ended.
202025-09-14T07:05:25.457629Z 6[Warning][MY-010453][Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
2.4.1.7 准备配置文件
代码语言:javascript
复制
1cat> /etc/my.cnf <<EOF
2[mysqld]
3user=mysql
4basedir=/apps/mysql/
5datadir=/data/mysql
6port=3306
7socket=/data/mysql/mysql.sock
8log-error=/data/mysql/mysql.log
9pid-file=/data/mysql/mysql.pid
10
11[client]
12port=3306
13socket=/data/mysql/mysql.sock
14EOF
2.4.1.8 准备启动脚本并启动服务
代码语言:javascript
复制
1# Rocky、Almalinux、CentOS、openEuler、AnolisOS、OpenCloudOS、 Kylin Server、UOS Server、openSUSE
2cp /apps/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
3
4# Ubuntu Server 24.04 LTS
5cp /apps/mysql/usr/lib/systemd/system/mysqld.service /lib/systemd/system/
6
7# Ubuntu Server 18.04/20.04/22.04和Debian 11/12没有mysqld.service,需要单独写配置文件
8cat> /lib/systemd/system/mysqld.service  <<EOF
9# Copyright (c) 2015, 2025, Oracle and/or its affiliates.
10#
11# This program is free software; you can redistribute it and/or modify
12# it under the terms of the GNU General Public License, version 2.0,
13# as published by the Free Software Foundation.
14#
15# This program is designed to work with certain software (including
16# but not limited to OpenSSL) that is licensed under separate terms,
17# as designated in a particular file or component or in included license
18# documentation.  The authors of MySQL hereby grant you an additional
19# permission to link the program and your derivative works with the
20# separately licensed software that they have either included with
21# the program or referenced in the documentation.
22#
23# This program is distributed in the hope that it will be useful,
24# but WITHOUT ANY WARRANTY; without even the implied warranty of
25# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
26# GNU General Public License, version 2.0, for more details.
27#
28# You should have received a copy of the GNU General Public License
29# along with this program; if not, write to the Free Software
30# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
31#
32# systemd service file for MySQL forking server
33#
34
35[Unit]
36Description=MySQL Server
37Documentation=man:mysqld(8)
38Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
39After=network-online.target
40Wants=network-online.target
41After=syslog.target
42
43[Install]
44WantedBy=multi-user.target
45
46[Service]
47User=mysql
48Group=mysql
49
50Type=notify
51
52# Disable service start and stop timeout logic of systemd for mysqld service.
53TimeoutSec=0
54
55# Execute pre and post scripts as root
56# hence, + prefix is used
57
58# Needed to create system tables
59ExecStartPre=+/apps/mysql/bin/mysqld_pre_systemd
60
61# Start main service
62ExecStart=/apps/mysql/bin/mysqld $MYSQLD_OPTS
63
64# Use this to switch malloc implementation
65EnvironmentFile=-/etc/sysconfig/mysql
66
67# Sets open_files_limit
68LimitNOFILE =10000
69
70Restart=on-failure
71
72RestartPreventExitStatus=1
73
74# Set enviroment variable MYSQLD_PARENT_PID. This is required for restart.
75Environment=MYSQLD_PARENT_PID=1
76
77PrivateTmp=false
78EOF
79
80# Debian 13没有mysqld.service,需要单独写配置文件
81cat> /lib/systemd/system/mysqld.service  <<EOF
82[Unit]
83Description=MySQL Server
84After=network.target
85
86[Service]
87User=mysql
88Group=mysql
89ExecStart=/apps/mysql/bin/mysqld --defaults-file=/etc/my.cnf
90Restart=on-failure
91
92[Install]
93WantedBy=multi-user.target
94EOF
95
96systemctl daemon-reload && systemctl enable--now mysqld
2.4.1.9 修改口令
代码语言:javascript
复制
1# 如果使用的是空密码,就不需要修改口令
2mysqladmin -u root -p'q&VUtowtA6!.' password 123456
3mysqladmin: [Warning] Using a password on the command line interface can be insecure.
4Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
2.4.1.10 登录测试
代码语言:javascript
复制
1[root@rocky10 mysql-8.0.42]# mysql
2Welcome to the MySQL monitor.  Commands end with ; or \g.
3Your MySQL connection id is 8
4Server version: 8.0.42 Source distribution
5
6Copyright (c)2000, 2025, Oracle and/or its affiliates.
7
8Oracle is a registered trademark of Oracle Corporation and/or its
9affiliates. Other names may be trademarks of their respective
10owners.
11
12Type 'help;' or '\h'for help. Type '\c' to clear the current input statement.
13
14mysql> status
15--------------
16mysql  Ver 8.0.42 for Linux on x86_64 (Source distribution)
17
18Connection id:		8
19Current database:	
20Current user:		root@localhost
21SSL:			Not in use
22Current pager:		stdout
23Using outfile:		''
24Using delimiter:	;
25Server version:		8.0.42 Source distribution
26Protocol version:	10
27Connection:		Localhost via UNIX socket
28Server characterset:	utf8mb4
29Db     characterset:	utf8mb4
30Client characterset:	utf8mb4
31Conn.  characterset:	utf8mb4
32UNIX socket:		/data/mysql/mysql.sock
33Binary data as:		Hexadecimal
34Uptime:			2 min 56 sec
35
36Threads: 2  Questions: 5  Slow queries: 0  Opens: 120  Flush tables: 3  Open tables: 36  Queries per second avg: 0.028
37--------------
38
39mysql> show databases;
40+--------------------+
41| Database           |
42+--------------------+
43| information_schema |
44| mysql              |
45| performance_schema |
46| sys                |
47+--------------------+
484 rows inset(0.01 sec)
49
50mysql>exit
51Bye
2.4.1.11 一键安装MySQL 8.0源码编译的脚本

Shell脚本源码地址:

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

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

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

代码语言:javascript
复制
1[root@rocky10 ~]# cat install_mysql_8.0_source_v2.sh
2#!/bin/bash
3#
4#**********************************************************************************
5#Author:        Raymond
6#QQ:            88563128
7#MP:            Raymond运维
8#Date:          2025-09-22
9#FileName:      install_mysql_8.0_source_v2.sh
10#URL:           https://wx.zsxq.com/group/15555885545422
11#Description:   The mysql source script install supports 
12#               “Rocky Linux 8, 9 and 10, AlmaLinux 8, 9 and 10, CentOS 7, 
13#               CentOS Stream 8, 9 and 10, openEuler 22.03 and 24.03 LTS, 
14#               AnolisOS 8 and 23, OpenCloudOS 8 and 9, Kylin Server v10 and v11, 
15#               UOS Server v20, Ubuntu Server 18.04, 20.04, 22.04 and 24.04 LTS,  
16#               Debian 11 , 12 and 13, openSUSE Leap 15“ operating systems.
17#Copyright (C): 2025 All rights reserved
18#**********************************************************************************
19COLOR="echo -e \\033[01;31m"
20END='\033[0m'
21
22os(){
23. /etc/os-release
24MAIN_NAME=`sed-rn'/^NAME=/s@.*="([[:alpha:]]+).*"$@\1@p' /etc/os-release`
25if[${MAIN_NAME}=="Kylin"];then
26MAIN_VERSION_ID=`sed-rn'/^VERSION_ID=/s@.*="([[:alpha:]]+)(.*)"$@\2@p' /etc/os-release`
27else
28MAIN_VERSION_ID=`sed-rn'/^VERSION_ID=/s@.*="?([0-9]+)\.?.*"?@\1@p' /etc/os-release`
29fi
30if[${MAIN_NAME}=="Ubuntu"-o${MAIN_NAME}=="Debian"];then
31FULL_NAME="${PRETTY_NAME}"
32elif[${MAIN_NAME}=="UOS"];then
33FULL_NAME="${NAME}"
34else
35FULL_NAME="${NAME}${VERSION_ID}"
36fi
37}
38
39os
40SRC_DIR=/usr/local/src
41INSTALL_DIR=/apps/mysql
42DATA_DIR=/data/mysql
43
44MYSQL_URL='https://cdn.mysql.com//Downloads/MySQL-8.0/'
45MYSQL_FILE='mysql-boost-8.0.42.tar.gz'
46
47CMAKE_URL='https://cmake.org/files/v3.31/'
48CMAKE_FILE='cmake-3.31.7-linux-x86_64.tar.gz'
49
50GCC_INSTALL_DIR=/usr
51GCC_URL='https://mirrors.cloud.tencent.com/gnu/gcc/gcc-11.5.0/'
52GCC_FILE='gcc-11.5.0.tar.gz'
53GMP_URL='http://gcc.gnu.org/pub/gcc/infrastructure/'
54GMP_FILE='gmp-6.1.0.tar.bz2'
55MPFR_URL='http://gcc.gnu.org/pub/gcc/infrastructure/'
56MPFR_FILE='mpfr-3.1.6.tar.bz2'
57MPC_URL='http://gcc.gnu.org/pub/gcc/infrastructure/'
58MPC_FILE='mpc-1.0.3.tar.gz'
59ISL_URL='http://gcc.gnu.org/pub/gcc/infrastructure/'
60ISL_FILE='isl-0.18.tar.bz2'
61
62check_mysql_file(){
63if[${MAIN_NAME}=="Rocky"-o${MAIN_NAME}=="AlmaLinux"-o${MAIN_NAME}=="CentOS"-o${MAIN_NAME}=="Anolis"-o${MAIN_NAME}=="OpenCloudOS"-o${MAIN_NAME}=="Kylin"];then
64rpm-qwget&> /dev/null ||{${COLOR}"安装wget工具,请稍等......"${END};yum -yinstallwget&> /dev/null;}
65fi
66if[!-e${MYSQL_FILE}];then
67${COLOR}"缺少${MYSQL_FILE}文件!"${END}
68${COLOR}'开始下载MySQL源码包......'${END}
69wget${MYSQL_URL}${MYSQL_FILE}||{${COLOR}"MySQL源码包下载失败!"${END};exit;}
70else
71${COLOR}"${MYSQL_FILE}相关文件已准备好!"${END}
72fi
73}
74
75check_cmake_file(){
76if[!-e${CMAKE_FILE}];then
77${COLOR}"缺少${CMAKE_FILE}文件!"${END}
78${COLOR}'开始下载cmake二进制包......'${END}
79wget${CMAKE_URL}${CMAKE_FILE}||{${COLOR}"cmake二进制包下载失败!"${END};exit;}
80else
81${COLOR}"${CMAKE_FILE}相关文件已准备好!"${END}
82fi
83}
84
85check_gcc_file(){
86if[!-e${GCC_FILE}];then
87${COLOR}"缺少${GCC_FILE}文件!"${END}
88${COLOR}'开始下载gcc源码包......'${END}
89wget${GCC_URL}${GCC_FILE}||{${COLOR}"gcc源码包下载失败!"${END};exit;}
90else
91${COLOR}"${GCC_FILE}相关文件已准备好!"${END}
92fi
93}
94
95check_file(){
96cd${SRC_DIR}
97    check_mysql_file
98if[${MAIN_NAME}=="CentOS"-a${MAIN_VERSION_ID}==7];then
99        check_cmake_file
100fi
101if[${MAIN_NAME}=="Ubuntu"-a${MAIN_VERSION_ID}==18];then
102        check_cmake_file
103fi
104if[${MAIN_NAME}=='Kylin'-a${MAIN_VERSION_ID}==10];then
105        check_gcc_file
106fi
107if[${MAIN_NAME}=='UOS'-a${MAIN_VERSION_ID}==20];then
108        check_gcc_file
109fi
110if[${MAIN_NAME}=='openSUSE'-a${MAIN_VERSION_ID}==15];then
111        check_gcc_file
112fi
113}
114
115install_cmake(){
116${COLOR}'开始安装cmake,请稍等......'${END}
117tar xf ${CMAKE_FILE}-C /usr/local/
118CMAKE_DIR=`echo ${CMAKE_FILE}|sed-nr's/^(.*[0-9]).*/\1/p'`
119ln-s /usr/local/${CMAKE_DIR}/bin/cmake /usr/bin/
120}
121
122install_gcc(){
123${COLOR}'开始编译安装gcc,请稍等......'${END}
124tar xf ${GCC_FILE}
125GCC_DIR=`echo ${GCC_FILE}|sed-nr's/^(.*[0-9]).*/\1/p'`
126cd${GCC_DIR}
127wget${GMP_URL}${GMP_FILE}||{${COLOR}"gmp源码包下载失败!"${END};exit;}
128wget${MPFR_URL}${MPFR_FILE}||{${COLOR}"mpfr源码包下载失败!"${END};exit;}
129wget${MPC_URL}${MPC_FILE}||{${COLOR}"mpc源码包下载失败!"${END};exit;}
130wget${ISL_URL}${ISL_FILE}||{${COLOR}"isl源码包下载失败!"${END};exit;}
131    ./contrib/download_prerequisites
132mkdir build
133cd build
134../configure --prefix=${GCC_INSTALL_DIR} --disable-multilib
135make-j$(nproc)&&makeinstall
136[$?-eq0]&&${COLOR}"gcc编译安装成功!"${END}||{${COLOR}"gcc编译安装失败,退出!"${END};exit;}
137}
138
139install_mysql(){
140[-d${INSTALL_DIR}]&&{${COLOR}"MySQL数据库已存在,安装失败!"${END};exit;}
141${COLOR}"开始安装MySQL数据库......"${END}
142if[${MAIN_NAME}=="openSUSE"];then
143id mysql &> /dev/null ||{groupadd-r mysql &&useradd-s /sbin/nologin -d${DATA_DIR}-r-g mysql mysql ;${COLOR}"成功创建mysql用户!"${END};}
144else
145id mysql &> /dev/null ||{useradd-r-s /sbin/nologin -d${DATA_DIR} mysql ;${COLOR}"成功创建mysql用户!"${END};}
146fi
147[-d${DATA_DIR}]||mkdir-p${DATA_DIR}
148chown-R mysql:mysql ${DATA_DIR}
149${COLOR}'开始安装MySQL依赖包,请稍等......'${END}
150if[${MAIN_NAME}=="Rocky"];then
151if[${MAIN_VERSION_ID}==8];then
152            dnf config-manager --set-enabled powertools
153else
154            dnf config-manager --set-enabled devel
155fi
156fi
157if[${MAIN_NAME}=="AlmaLinux"];then
158if[${MAIN_VERSION_ID}==8];then
159            dnf config-manager --set-enabled powertools
160else
161            dnf config-manager --set-enabled crb
162fi
163fi
164if[${MAIN_NAME}=="CentOS"];then
165if[${MAIN_VERSION_ID}==8];then
166            dnf config-manager --set-enabled powertools
167else
168            dnf config-manager --set-enabled crb
169fi
170fi
171if[${MAIN_NAME}=="OpenCloudOS"-a${MAIN_VERSION_ID}==8];then
172        dnf config-manager --set-enabled PowerTools
173fi
174if[${MAIN_NAME}=="Rocky"];then
175if[${MAIN_VERSION_ID}==8-o${MAIN_VERSION_ID}==9];then
176            yum install-y cmake gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-binutils gcc-toolset-12-annobin-annocheck gcc-toolset-12-annobin-plugin-gcc gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen &> /dev/null
177else
178            yum install-y cmake gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen &> /dev/null
179fi
180fi
181if[${MAIN_NAME}=="AlmaLinux"];then
182if[${MAIN_VERSION_ID}==8-o${MAIN_VERSION_ID}==9];then
183            yum install-y cmake gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-binutils gcc-toolset-12-annobin-annocheck gcc-toolset-12-annobin-plugin-gcc gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen &> /dev/null
184else
185            yum install-y cmake gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen &> /dev/null
186fi
187fi
188if[${MAIN_NAME}=="CentOS"];then
189if[${MAIN_VERSION_ID}==7];then
190            yum install-y centos-release-scl &> /dev/null
191MIRROR=mirrors.tencent.com
192OS_RELEASE_FULL_VERSION=`cat /etc/centos-release |sed-rn's/^(CentOS Linux release )(.*)( \(Core\))/\2/p'`
193sed-i.bak-e's|^mirrorlist=|#mirrorlist=|g'-e's|^# baseurl=|baseurl=|g'-e's|^#baseurl=|baseurl=|g'-e's|http://mirror.centos.org/centos|https://'${MIRROR}'/centos-vault|g'-e"s/7/${OS_RELEASE_FULL_VERSION}/g"  /etc/yum.repos.d/CentOS-SCLo-*.repo
194            yum install-y devtoolset-11-gcc devtoolset-11-gcc-c++ devtoolset-11-binutils gcc gcc-c++ openssl-devel ncurses-devel &> /dev/null
195elif[${MAIN_VERSION_ID}==8-o${MAIN_VERSION_ID}==9];then
196            yum install-y cmake gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-binutils gcc-toolset-12-annobin-annocheck gcc-toolset-12-annobin-plugin-gcc gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen &> /dev/null
197else
198            yum install-y cmake gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen &> /dev/null
199fi
200fi
201if[${MAIN_NAME}=="openEuler"];then
202if[${MAIN_VERSION_ID}==22-o${MAIN_VERSION_ID}==24];then
203            yum install-y cmake make gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen &> /dev/null
204fi
205fi
206if[${MAIN_NAME}=="Anolis"];then
207if[${MAIN_VERSION_ID}==8-o${MAIN_VERSION_ID}==23];then
208            yum install-y cmake gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen &> /dev/null
209fi
210fi
211if[${MAIN_NAME}=='OpenCloudOS'];then
212if[${MAIN_VERSION_ID}==8];then
213            yum install-y cmake gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen &> /dev/null
214else
215            yum install-y cmake gcc gcc-c++ systemd-devel openssl-devel ncurses-devel libtirpc-devel rpcgen &> /dev/null
216fi
217fi
218if[${MAIN_NAME}=="Kylin"];then
219        yum install-y cmake make gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen &> /dev/null
220fi
221if[${MAIN_NAME}=="UOS"];then
222if[${MAIN_VERSION_ID}==20];then
223            yum install-y cmake ncurses-devel libtirpc-devel rpcgen &> /dev/null
224fi
225fi
226if[${MAIN_NAME}=="openSUSE"];then
227if[${MAIN_VERSION_ID}==15];then
228zypperinstall-y cmake gcc gcc-c++ libopenssl-devel ncurses-devel libtirpc-devel rpcgen &> /dev/null
229fi
230fi
231if[${MAIN_NAME}=="Ubuntu"];then
232if[${MAIN_VERSION_ID}==18];then
233apt update &&aptinstall-y gcc-8 g++-8 libssl-dev libncurses5-dev pkg-config
234elif[${MAIN_VERSION_ID}==20-o${MAIN_VERSION_ID}==22];then
235apt update &&aptinstall-y cmake g++ libssl-dev libncurses5-dev pkg-config
236else
237apt update &&aptinstall-y cmake g++ libssl-dev libncurses5-dev pkg-config libtirpc-dev
238fi
239fi
240if[${MAIN_NAME}=='Debian'];then
241if[${MAIN_VERSION_ID}==11-o${MAIN_VERSION_ID}==12];then
242apt update &&aptinstall-y cmake g++ libssl-dev libncurses5-dev pkg-config
243else
244apt update &&aptinstall-y cmake g++ libssl-dev libncurses5-dev pkg-config libtirpc-dev
245fi
246fi
247if[${MAIN_NAME}=="CentOS"-a${MAIN_VERSION_ID}==7];then
248        install_cmake
249fi
250if[${MAIN_NAME}=='Ubuntu'-a${MAIN_VERSION_ID}==18];then
251        install_cmake
252fi
253if[${MAIN_NAME}=='Kylin'];then
254if[${MAIN_VERSION_ID}==10];then
255            install_gcc
256fi
257fi
258if[${MAIN_NAME}=='UOS'];then
259if[${MAIN_VERSION_ID}==20];then
260            install_gcc
261fi
262fi
263if[${MAIN_NAME}=='openSUSE'];then
264if[${MAIN_VERSION_ID}==15];then
265            install_gcc
266fi
267fi
268${COLOR}'开始编译安装MySQL,请稍等......'${END}
269cd${SRC_DIR}
270if[${MAIN_NAME}=="openEuler"];then
271if[${MAIN_VERSION_ID}==22-o${MAIN_VERSION_ID}==24];then
272            yum install-ytar&> /dev/null
273fi
274fi
275if[${MAIN_NAME}=="Anolis"];then
276if[${MAIN_VERSION_ID}==23];then
277            yum install-ytar&> /dev/null
278fi
279fi
280if[${MAIN_NAME}=="OpenCloudOS"];then
281if[${MAIN_VERSION_ID}==9];then
282            yum install-ytar&> /dev/null
283fi
284fi
285tar xf ${MYSQL_FILE}
286MYSQL_DIR=`echo ${MYSQL_FILE}|sed-nr's/^(.*[0-9]).*/\1/p'|cut -d"-"-f1,3`
287cd${MYSQL_DIR}
288if[${MAIN_NAME}=="Debian"-a${MAIN_VERSION_ID}==13];then
289        cmake .\
290-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR}\
291-DMYSQL_DATADIR=${DATA_DIR}/ \
292-DSYSCONFDIR=/etc/ \
293-DWITH_INNOBASE_STORAGE_ENGINE=1\
294-DWITH_ARCHIVE_STORAGE_ENGINE=1\
295-DWITH_BLACKHOLE_STORAGE_ENGINE=1\
296-DWITH_DEBUG=0\
297-DWITH_SSL=system \
298-DWITH_LIBWRAP=0\
299-DENABLED_LOCAL_INFILE=1\
300-DMYSQL_UNIX_ADDR=${DATA_DIR}/mysql.sock \
301-DDEFAULT_CHARSET=utf8mb4 \
302-DDEFAULT_COLLATION=utf8mb4_general_ci \
303-DWITH_BOOST=/usr/local/src/${MYSQL_DIR}/boost/boost_1_77_0/ \
304-DFORCE_INSOURCE_BUILD=1
305else
306        cmake .\
307-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR}\
308-DMYSQL_DATADIR=${DATA_DIR}/ \
309-DSYSCONFDIR=/etc/ \
310-DWITH_INNOBASE_STORAGE_ENGINE=1\
311-DWITH_ARCHIVE_STORAGE_ENGINE=1\
312-DWITH_BLACKHOLE_STORAGE_ENGINE=1\
313-DWITH_DEBUG=0\
314-DWITH_SSL=system \
315-DWITH_LIBWRAP=0\
316-DENABLED_LOCAL_INFILE=1\
317-DMYSQL_UNIX_ADDR=${DATA_DIR}/mysql.sock \
318-DDEFAULT_CHARSET=utf8mb4 \
319-DDEFAULT_COLLATION=utf8mb4_general_ci \
320-DWITH_BOOST=/usr/local/src/${MYSQL_DIR}/boost/boost_1_77_0/ \
321-DFORCE_INSOURCE_BUILD=1\
322-DWITH_SYSTEMD=1
323fi
324make-j$(nproc)&&makeinstall
325[$?-eq0]&&${COLOR}"MySQL编译安装成功!"${END}||{${COLOR}"MySQL编译安装失败,退出!"${END};exit;}
326echo'PATH='${INSTALL_DIR}'/bin:$PATH'> /etc/profile.d/mysql.sh
327. /etc/profile.d/mysql.sh
328chown-R mysql:mysql ${INSTALL_DIR}
329    mysqld --initialize-insecure --user=mysql --basedir=${INSTALL_DIR}--datadir=${DATA_DIR}
330cat> /etc/my.cnf <<EOF
331[mysqld]
332user=mysql
333basedir=${INSTALL_DIR}
334datadir=${DATA_DIR}
335port=3306
336socket=${DATA_DIR}/mysql.sock
337log-error=${DATA_DIR}/mysql.log
338pid-file=${DATA_DIR}/mysql.pid
339
340[client]
341port=3306
342socket=${DATA_DIR}/mysql.sock
343EOF
344if[${MAIN_NAME}=="Rocky"-o${MAIN_NAME}=="AlmaLinux"-o${MAIN_NAME}=="CentOS"-o${MAIN_NAME}=="openEuler"-o${MAIN_NAME}=="Anolis"-o${MAIN_NAME}=="OpenCloudOS"-o${MAIN_NAME}=="Kylin"-o${MAIN_NAME}=="UOS"-o${MAIN_NAME}=="openSUSE"];then
345cp${INSTALL_DIR}/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
346elif[${MAIN_NAME}=="Ubuntu"];then
347if[${MAIN_VERSION_ID}==24];then
348cp${INSTALL_DIR}/usr/lib/systemd/system/mysqld.service /lib/systemd/system/
349fi
350elif[${MAIN_NAME}=="Debian"];then
351if[${MAIN_VERSION_ID}==13];then
352cat> /lib/systemd/system/mysqld.service  <<EOF
353[Unit]
354Description=MySQL Server
355After=network.target
356
357[Service]
358User=mysql
359Group=mysql
360ExecStart=${INSTALL_DIR}/bin/mysqld --defaults-file=/etc/my.cnf
361Restart=on-failure
362
363[Install]
364WantedBy=multi-user.target
365EOF
366fi
367else
368cat> /lib/systemd/system//mysqld.service  <<EOF
369# Copyright (c) 2015, 2025, Oracle and/or its affiliates.
370#
371# This program is free software; you can redistribute it and/or modify
372# it under the terms of the GNU General Public License, version 2.0,
373# as published by the Free Software Foundation.
374#
375# This program is designed to work with certain software (including
376# but not limited to OpenSSL) that is licensed under separate terms,
377# as designated in a particular file or component or in included license
378# documentation.  The authors of MySQL hereby grant you an additional
379# permission to link the program and your derivative works with the
380# separately licensed software that they have either included with
381# the program or referenced in the documentation.
382#
383# This program is distributed in the hope that it will be useful,
384# but WITHOUT ANY WARRANTY; without even the implied warranty of
385# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
386# GNU General Public License, version 2.0, for more details.
387#
388# You should have received a copy of the GNU General Public License
389# along with this program; if not, write to the Free Software
390# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
391#
392# systemd service file for MySQL forking server
393#
394
395[Unit]
396Description=MySQL Server
397Documentation=man:mysqld(8)
398Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
399After=network-online.target
400Wants=network-online.target
401After=syslog.target
402
403[Install]
404WantedBy=multi-user.target
405
406[Service]
407User=mysql
408Group=mysql
409
410Type=notify
411
412# Disable service start and stop timeout logic of systemd for mysqld service.
413TimeoutSec=0
414
415# Execute pre and post scripts as root
416# hence, + prefix is used
417
418# Needed to create system tables
419ExecStartPre=+${INSTALL_DIR}/bin/mysqld_pre_systemd
420
421# Start main service
422ExecStart=${INSTALL_DIR}/bin/mysqld $MYSQLD_OPTS
423
424# Use this to switch malloc implementation
425EnvironmentFile=-/etc/sysconfig/mysql
426
427# Sets open_files_limit
428LimitNOFILE =10000
429
430Restart=on-failure
431
432RestartPreventExitStatus=1
433
434# Set enviroment variable MYSQLD_PARENT_PID. This is required for restart.
435Environment=MYSQLD_PARENT_PID=1
436
437PrivateTmp=false
438EOF
439fi
440    systemctl daemon-reload && systemctl enable--now mysqld &> /dev/null
441[$?-ne0]&&{${COLOR}"数据库启动失败,退出!"${END};exit;}
442${COLOR}"${FULL_NAME}操作系统,MySQL数据库安装完成!"${END}
443}
444
445main(){
446    check_file
447    install_mysql
448}
449
450if[${MAIN_NAME}=="Rocky"];then
451if[${MAIN_VERSION_ID}==8-o${MAIN_VERSION_ID}==9-o${MAIN_VERSION_ID}==10];then
452        main
453fi
454elif[${MAIN_NAME}=="AlmaLinux"];then
455if[${MAIN_VERSION_ID}==8-o${MAIN_VERSION_ID}==9-o${MAIN_VERSION_ID}==10];then
456        main
457fi
458elif[${MAIN_NAME}=="CentOS"];then
459if[${MAIN_VERSION_ID}==7-o${MAIN_VERSION_ID}==8-o${MAIN_VERSION_ID}==9-o${MAIN_VERSION_ID}==10];then
460        main
461fi
462elif[${MAIN_NAME}=="openEuler"];then
463if[${MAIN_VERSION_ID}==22-o${MAIN_VERSION_ID}==24];then
464        main
465fi
466elif[${MAIN_NAME}=="Anolis"];then
467if[${MAIN_VERSION_ID}==8-o${MAIN_VERSION_ID}==23];then
468        main
469fi
470elif[${MAIN_NAME}=='OpenCloudOS'];then
471if[${MAIN_VERSION_ID}==8-o${MAIN_VERSION_ID}==9];then
472        main
473fi
474elif[${MAIN_NAME}=="Kylin"];then
475if[${MAIN_VERSION_ID}==10-o${MAIN_VERSION_ID}==11];then
476        main
477fi
478elif[${MAIN_NAME}=="UOS"];then
479if[${MAIN_VERSION_ID}==20];then
480        main
481fi
482elif[${MAIN_NAME}=="openSUSE"];then
483if[${MAIN_VERSION_ID}==15];then
484        main
485fi
486elif[${MAIN_NAME}=="Ubuntu"];then
487if[${MAIN_VERSION_ID}==18-o${MAIN_VERSION_ID}==20-o${MAIN_VERSION_ID}==22-o${MAIN_VERSION_ID}==24];then
488        main
489fi
490elif[${MAIN_NAME}=='Debian'];then
491if[${MAIN_VERSION_ID}==11-o${MAIN_VERSION_ID}==12-o${MAIN_VERSION_ID}==13];then
492        main
493fi
494else
495${COLOR}"此脚本不支持${FULL_NAME}操作系统!"${END}
496fi

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.4.1.4.11 Ubuntu Server 18.04 LTS
  • 2.4.1.4.12 Debian 13
  • 2.4.1.5 准备环境变量
  • 2.4.1.6 生成数据库文件
  • 2.4.1.7 准备配置文件
  • 2.4.1.8 准备启动脚本并启动服务
  • 2.4.1.9 修改口令
  • 2.4.1.10 登录测试
  • 2.4.1.11 一键安装MySQL 8.0源码编译的脚本
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档