MySQL 8.0源码编译安装(二)
2.4.1.4.7 UOS Server V20
编译安装gcc:
[root@uos20 src]# gcc --version
gcc (GCC) 7.3.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[root@uos20 src]# g++ --version
g++ (GCC) 7.3.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# MySQL 8.0需要gcc 8或更高版本,gcc和gcc-c++版本过低,需要编译安装gccc
# 注意:这里需要编译安装gcc 11,不要装gcc 10,装了gcc 10在登录mysql之后就退出了,报错“Segmentation fault”。
wget https://mirrors.cloud.tencent.com/gnu/gcc/gcc-11.5.0/gcc-11.5.0.tar.gz
tar xf gcc-11.5.0.tar.gz
cd gcc-11.5.0
# 下载gcc依赖包
./contrib/download_prerequisites
2025-05-04 11:56:53 URL:https://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2 [2383840/2383840] -> "gmp-6.1.0.tar.bz2" [1]
2025-05-04 11:56:56 URL:http://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.6.tar.bz2 [1287202/1287202] -> "mpfr-3.1.6.tar.bz2" [1]
2025-05-04 11:56:59 URL:http://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz [669925/669925] -> "mpc-1.0.3.tar.gz" [1]
2025-05-04 11:57:02 URL:http://gcc.gnu.org/pub/gcc/infrastructure/isl-0.18.tar.bz2 [1658291/1658291] -> "isl-0.18.tar.bz2" [1]
gmp-6.1.0.tar.bz2: OK
mpfr-3.1.6.tar.bz2: OK
mpc-1.0.3.tar.gz: OK
isl-0.18.tar.bz2: OK
All prerequisites downloaded successfully.
mkdir build
cd build/
# 执行configure
../configure --prefix=/usr --disable-multilib
...
configure: creating ./config.status
config.status: creating Makefile
# 执行make
make -j $(nproc) && make install
...
make[4]: Nothing to be done for 'install-data-am'.
make[4]: Leaving directory '/usr/local/src/gcc-11.5.0/build/x86_64-pc-linux-gnu/libatomic'
make[3]: Leaving directory '/usr/local/src/gcc-11.5.0/build/x86_64-pc-linux-gnu/libatomic'
make[2]: Leaving directory '/usr/local/src/gcc-11.5.0/build/x86_64-pc-linux-gnu/libatomic'
make[1]: Leaving directory '/usr/local/src/gcc-11.5.0/build'
[root@anolis8 build]# gcc --version
gcc (GCC) 11.5.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
进入mysql包解压的目录:
cd mysql-8.0.42/
安装cmake包:
yum install -y cmake
执行cmake:
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at cmake/readline.cmake:93 (MESSAGE):
Curses library not found. Please install appropriate package,
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。
Call Stack (most recent call first):
cmake/readline.cmake:127 (FIND_CURSES)
cmake/readline.cmake:221 (MYSQL_USE_BUNDLED_EDITLINE)
CMakeLists.txt:1930 (MYSQL_CHECK_EDITLINE)
-- Configuring incomplete, errors occurred!
See also "/usr/local/src/mysql-8.0.42/CMakeFiles/CMakeOutput.log".
See also "/usr/local/src/mysql-8.0.42/CMakeFiles/CMakeError.log".
安装ncurses-devel:
yum install -y ncurses-devel
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at cmake/rpc.cmake:41 (MESSAGE):
Cannot find RPC development libraries. You need to install the required
packages: # 提示,找不到 RPC 开发库。您需要安装所需的包:
Debian/Ubuntu: apt install libtirpc-dev
RedHat/Fedora/Oracle Linux: yum install libtirpc-devel
SuSE: zypper install glibc-devel
Call Stack (most recent call first):
cmake/rpc.cmake:112 (WARN_MISSING_SYSTEM_TIRPC)
CMakeLists.txt:2066 (MYSQL_CHECK_RPC)
CMake Error at cmake/rpc.cmake:113 (MESSAGE):
Could not find rpc/rpc.h in /usr/include or /usr/include/tirpc
Call Stack (most recent call first):
CMakeLists.txt:2066 (MYSQL_CHECK_RPC)
-- Configuring incomplete, errors occurred!
See also "/usr/local/src/mysql-8.0.42/CMakeFiles/CMakeOutput.log".
See also "/usr/local/src/mysql-8.0.42/CMakeFiles/CMakeError.log".
安装libtirpc-devel包:
yum install -y libtirpc-devel
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at cmake/rpc.cmake:30 (MESSAGE):
Cannot find rpcgen executable. You need to install the required packages: # 提示,找不到 rpcgen 可执行文件。您需要安装所需的软件包:
Debian/Ubuntu: apt install rpcsvc-proto
RedHat/Fedora/Oracle Linux: yum install rpcgen
SuSE: zypper install glibc-devel
Call Stack (most recent call first):
plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:113 (WARN_MISSING_RPCGEN_EXECUTABLE)
plugin/group_replication/libmysqlgcs/CMakeLists.txt:51 (INCLUDE)
CMake Error at plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:114 (MESSAGE):
Could not find rpcgen
Call Stack (most recent call first):
plugin/group_replication/libmysqlgcs/CMakeLists.txt:51 (INCLUDE)
-- Configuring incomplete, errors occurred!
See also "/usr/local/src/mysql-8.0.42/CMakeFiles/CMakeOutput.log".
See also "/usr/local/src/mysql-8.0.42/CMakeFiles/CMakeError.log".
安装rpcgen包:
yum install -y rpcgen
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/src/mysql-8.0.42
执行make:
make -j $(nproc) && make install
总结编译过程:
# 安装依赖包
yum install -y cmake ncurses-devel libtirpc-devel rpcgen
# 编译gcc
wget https://mirrors.cloud.tencent.com/gnu/gcc/gcc-11.5.0/gcc-11.5.0.tar.gz
tar xf gcc-11.5.0.tar.gz
cd gcc-11.5.0
./contrib/download_prerequisites
mkdir build
cd build/
../configure --prefix=/usr --disable-multilib
make -j $(nproc) && make install
# 进入mysql包解压的目录
cd ../../mysql-8.0.42/
# 执行cmake
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
# 执行make
make -j $(nproc) && make install
2.4.1.4.8 openSUSE 15
进入mysql包解压的目录:
cd mysql-8.0.42/
安装cmake包:
zypper install -y cmake
执行cmake:
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning:
No source or binary directory provided. Both will be assumed to be the
same as the current working directory, but note that this warning will
become a fatal error in future CMake releases.
-- Running cmake version 3.28.3
-- Could NOT find Git (missing: GIT_EXECUTABLE)
-- CMAKE_MODULE_PATH is /usr/local/src/mysql-8.0.42/cmake
-- MySQL 8.0.42
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:585 (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:585 (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++
opensuse15:/usr/local/src/mysql-8.0.42 # gcc --version
gcc (SUSE Linux) 7.5.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
opensuse15:/usr/local/src/mysql-8.0.42 # g++ --version
g++ (SUSE Linux) 7.5.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# MySQL 8.0需要gcc 8或更高版本,gcc和gcc-c++版本过低,需要编译安装gcc
编译安装gcc:
cd ..
# 注意:这里需要编译安装gcc 11,不要装gcc 10,装了gcc 10在登录mysql之后就退出了,报错“Segmentation fault”。
wget https://mirrors.cloud.tencent.com/gnu/gcc/gcc-11.5.0/gcc-11.5.0.tar.gz
tar xf gcc-11.5.0.tar.gz
cd gcc-11.5.0
# 下载gcc依赖包
./contrib/download_prerequisites
2025-05-04 15:17:24 URL:https://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2 [2383840/2383840] -> "gmp-6.1.0.tar.bz2" [1]
2025-05-04 15:17:46 URL:http://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.6.tar.bz2 [1287202/1287202] -> "mpfr-3.1.6.tar.bz2" [1]
2025-05-04 15:18:00 URL:http://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz [669925/669925] -> "mpc-1.0.3.tar.gz" [1]
2025-05-04 15:18:26 URL:http://gcc.gnu.org/pub/gcc/infrastructure/isl-0.18.tar.bz2 [1658291/1658291] -> "isl-0.18.tar.bz2" [1]
gmp-6.1.0.tar.bz2: OK
mpfr-3.1.6.tar.bz2: OK
mpc-1.0.3.tar.gz: OK
isl-0.18.tar.bz2: OK
All prerequisites downloaded successfully.
mkdir build
cd build/
# 执行configure
../configure --prefix=/usr --disable-multilib
...
configure: creating ./config.status
config.status: creating Makefile
# 执行make
make -j $(nproc) && make install
...
make[4]: Nothing to be done for 'install-data-am'.
make[4]: Leaving directory '/usr/local/src/gcc-11.5.0/build/x86_64-pc-linux-gnu/libatomic'
make[3]: Leaving directory '/usr/local/src/gcc-11.5.0/build/x86_64-pc-linux-gnu/libatomic'
make[2]: Leaving directory '/usr/local/src/gcc-11.5.0/build/x86_64-pc-linux-gnu/libatomic'
make[1]: Leaving directory '/usr/local/src/gcc-11.5.0/build'
opensuse15:/usr/local/src/gcc-11.5.0/build # gcc --version
gcc (GCC) 11.5.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
再次进入mysql包解压的目录:
cd ../../mysql-8.0.42/
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
Not a supported openssl version in WITH_SSL=system.
Make sure you have specified a supported SSL version.
Valid options are :
openssl[0-9]+ (use alternative system library)
yes (synonym for system)
</path/to/custom/openssl/installation>
CMake Error at cmake/ssl.cmake:84 (MESSAGE):
Please install the appropriate openssl developer package. # 提示,请安装相应的 openssl 开发人员软件包。
Call Stack (most recent call first):
cmake/ssl.cmake:380 (FATAL_SSL_NOT_FOUND_ERROR)
CMakeLists.txt:1826 (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/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at cmake/readline.cmake:93 (MESSAGE):
Curses library not found. Please install appropriate package,
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。
Call Stack (most recent call first):
cmake/readline.cmake:127 (FIND_CURSES)
cmake/readline.cmake:221 (MYSQL_USE_BUNDLED_EDITLINE)
CMakeLists.txt:1930 (MYSQL_CHECK_EDITLINE)
-- Configuring incomplete, errors occurred!
安装ncurses-devel:
zypper install -y ncurses-devel
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at cmake/rpc.cmake:41 (MESSAGE):
Cannot find RPC development libraries. You need to install the required
packages: # 提示,找不到 RPC 开发库。您需要安装所需的包:
Debian/Ubuntu: apt install libtirpc-dev
RedHat/Fedora/Oracle Linux: yum install libtirpc-devel
SuSE: zypper install glibc-devel # 注意,它提示安装的这个包是不行的,要安装libtirpc-devel
Call Stack (most recent call first):
cmake/rpc.cmake:112 (WARN_MISSING_SYSTEM_TIRPC)
CMakeLists.txt:2066 (MYSQL_CHECK_RPC)
CMake Error at cmake/rpc.cmake:113 (MESSAGE):
Could not find rpc/rpc.h in /usr/include or /usr/include/tirpc
Call Stack (most recent call first):
CMakeLists.txt:2066 (MYSQL_CHECK_RPC)
-- Configuring incomplete, errors occurred!
安装libtirpc-devel包:
zypper install -y libtirpc-devel
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at cmake/rpc.cmake:30 (MESSAGE):
Cannot find rpcgen executable. You need to install the required packages: # 提示,找不到 rpcgen 可执行文件。您需要安装所需的软件包:
Debian/Ubuntu: apt install rpcsvc-proto
RedHat/Fedora/Oracle Linux: yum install rpcgen
SuSE: zypper install glibc-devel # 注意,它提示安装的这个包是不行的,要安装rpcgen
Call Stack (most recent call first):
plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:113 (WARN_MISSING_RPCGEN_EXECUTABLE)
plugin/group_replication/libmysqlgcs/CMakeLists.txt:51 (INCLUDE)
CMake Error at plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:114 (MESSAGE):
Could not find rpcgen
Call Stack (most recent call first):
plugin/group_replication/libmysqlgcs/CMakeLists.txt:51 (INCLUDE)
-- Configuring incomplete, errors occurred!
安装rpcgen包:
zypper install -y rpcgen
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
-- Configuring done (32.6s)
-- Generating done (2.1s)
-- Build files have been written to: /usr/local/src/mysql-8.0.42
执行make:
make -j $(nproc) && make install
总结编译过程:
# 安装依赖包
zypper install -y cmake gcc gcc-c++ libopenssl-devel ncurses-devel libtirpc-devel rpcgen
# 编译gcc
wget https://mirrors.cloud.tencent.com/gnu/gcc/gcc-11.5.0/gcc-11.5.0.tar.gz
tar xf gcc-11.5.0.tar.gz
cd gcc-11.5.0
./contrib/download_prerequisites
mkdir build
cd build/
../configure --prefix=/usr --disable-multilib
make -j $(nproc) && make install
# 进入mysql包解压的目录
cd ../../mysql-8.0.42/
# 执行cmake
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
# 执行make
make -j $(nproc) && make install
2.4.1.4.9 Ubuntu Server 24.04 LTS
进入mysql包解压的目录:
cd mysql-8.0.42/
安装cmake包:
apt update
apt install -y cmake
执行cmake:
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning:
No source or binary directory provided. Both will be assumed to be the
same as the current working directory, but note that this warning will
become a fatal error in future CMake releases.
-- Running cmake version 3.28.3
-- Found Git: /usr/bin/git (found version "2.43.0")
-- CMAKE_MODULE_PATH is /usr/local/src/mysql-8.0.42/cmake
-- MySQL 8.0.42
-- The C compiler identification is GNU 13.3.0
-- The CXX compiler identification is unknown
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
CMake Error at CMakeLists.txt:585 (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 中),需要安装g++。
-- Configuring incomplete, errors occurred!
安装g++包:
apt install -y g++
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
Not a supported openssl version in WITH_SSL=system.
Make sure you have specified a supported SSL version.
Valid options are :
openssl[0-9]+ (use alternative system library)
yes (synonym for system)
</path/to/custom/openssl/installation>
CMake Error at cmake/ssl.cmake:84 (MESSAGE):
Please install the appropriate openssl developer package. # 提示,请安装相应的 openssl 开发人员软件包。
Call Stack (most recent call first):
cmake/ssl.cmake:380 (FATAL_SSL_NOT_FOUND_ERROR)
CMakeLists.txt:1826 (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/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at cmake/readline.cmake:93 (MESSAGE):
Curses library not found. Please install appropriate package,
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。
Call Stack (most recent call first):
cmake/readline.cmake:127 (FIND_CURSES)
cmake/readline.cmake:221 (MYSQL_USE_BUNDLED_EDITLINE)
CMakeLists.txt:1930 (MYSQL_CHECK_EDITLINE)
-- Configuring incomplete, errors occurred!
安装libncurses5-dev包:
apt install -y libncurses5-dev
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at cmake/pkg-config.cmake:30 (MESSAGE):
Cannot find pkg-config. You need to install the required package: # 找不到 pkg-config。您需要安装所需的软件包:
Debian/Ubuntu: apt install pkg-config
RedHat/Fedora/Oracle Linux: yum install pkg-config
SuSE: zypper install pkg-config
Call Stack (most recent call first):
cmake/rpc.cmake:62 (MYSQL_CHECK_PKGCONFIG)
CMakeLists.txt:2066 (MYSQL_CHECK_RPC)
CMake Error at /usr/share/cmake-3.28/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
Call Stack (most recent call first):
/usr/share/cmake-3.28/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-3.28/Modules/FindPkgConfig.cmake:99 (find_package_handle_standard_args)
cmake/pkg-config.cmake:37 (FIND_PACKAGE)
cmake/rpc.cmake:62 (MYSQL_CHECK_PKGCONFIG)
CMakeLists.txt:2066 (MYSQL_CHECK_RPC)
-- Configuring incomplete, errors occurred!
安装pkg-config包:
apt install -y pkg-config
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at cmake/rpc.cmake:41 (MESSAGE):
Cannot find RPC development libraries. You need to install the required
packages: # 提示,找不到 RPC 开发库。您需要安装所需的包:
Debian/Ubuntu: apt install libtirpc-dev
RedHat/Fedora/Oracle Linux: yum install libtirpc-devel
SuSE: zypper install glibc-devel
Call Stack (most recent call first):
cmake/rpc.cmake:112 (WARN_MISSING_SYSTEM_TIRPC)
CMakeLists.txt:2066 (MYSQL_CHECK_RPC)
CMake Error at cmake/rpc.cmake:113 (MESSAGE):
Could not find rpc/rpc.h in /usr/include or /usr/include/tirpc
Call Stack (most recent call first):
CMakeLists.txt:2066 (MYSQL_CHECK_RPC)
-- Configuring incomplete, errors occurred!
安装libtirpc-dev包:
apt install -y libtirpc-dev
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
-- Configuring done (47.0s)
-- Generating done (3.4s)
-- Build files have been written to: /usr/local/src/mysql-8.0.42
执行make:
make -j $(nproc) && make install
总结编译过程:
# 安装依赖包
apt update
apt install -y cmake g++ libssl-dev libncurses5-dev pkg-config libtirpc-dev
# 进入mysql包解压的目录
cd mysql-8.0.42/
# 执行cmake
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
# 执行make
make -j $(nproc) && make install
2.4.1.4.10 Ubuntu Server 20.04/22.04 LTS和Debian 11/12
进入mysql包解压的目录:
cd mysql-8.0.42/
安装cmake包:
apt update
apt install -y cmake
执行cmake:
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning:
No source or binary directory provided. Both will be assumed to be the
same as the current working directory, but note that this warning will
become a fatal error in future CMake releases.
-- Running cmake version 3.22.1
-- Found Git: /usr/bin/git (found version "2.34.1")
-- CMAKE_MODULE_PATH is /usr/local/src/mysql-8.0.42/cmake
-- MySQL 8.0.42
-- The C compiler identification is GNU 11.4.0
-- The CXX compiler identification is unknown
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
CMake Error at CMakeLists.txt:585 (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 中),需要安装g++。
-- Configuring incomplete, errors occurred!
See also "/usr/local/src/mysql-8.0.42/CMakeFiles/CMakeOutput.log".
See also "/usr/local/src/mysql-8.0.42/CMakeFiles/CMakeError.log".
安装g++包:
apt install -y g++
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
Not a supported openssl version in WITH_SSL=system.
Make sure you have specified a supported SSL version.
Valid options are :
openssl[0-9]+ (use alternative system library)
yes (synonym for system)
</path/to/custom/openssl/installation>
CMake Error at cmake/ssl.cmake:84 (MESSAGE):
Please install the appropriate openssl developer package. # 提示,请安装相应的 openssl 开发人员软件包。
Call Stack (most recent call first):
cmake/ssl.cmake:380 (FATAL_SSL_NOT_FOUND_ERROR)
CMakeLists.txt:1826 (MYSQL_CHECK_SSL)
-- Configuring incomplete, errors occurred!
See also "/usr/local/src/mysql-8.0.42/CMakeFiles/CMakeOutput.log".
See also "/usr/local/src/mysql-8.0.42/CMakeFiles/CMakeError.log".
安装libssl-dev包:
apt install -y libssl-dev
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at cmake/readline.cmake:93 (MESSAGE):
Curses library not found. Please install appropriate package,
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。
Call Stack (most recent call first):
cmake/readline.cmake:127 (FIND_CURSES)
cmake/readline.cmake:221 (MYSQL_USE_BUNDLED_EDITLINE)
CMakeLists.txt:1930 (MYSQL_CHECK_EDITLINE)
-- Configuring incomplete, errors occurred!
See also "/usr/local/src/mysql-8.0.42/CMakeFiles/CMakeOutput.log".
See also "/usr/local/src/mysql-8.0.42/CMakeFiles/CMakeError.log".
安装libncurses5-dev包:
apt install -y libncurses5-dev
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at cmake/pkg-config.cmake:30 (MESSAGE):
Cannot find pkg-config. You need to install the required package: # 找不到 pkg-config。您需要安装所需的软件包:
Debian/Ubuntu: apt install pkg-config
RedHat/Fedora/Oracle Linux: yum install pkg-config
SuSE: zypper install pkg-config
Call Stack (most recent call first):
cmake/rpc.cmake:62 (MYSQL_CHECK_PKGCONFIG)
CMakeLists.txt:2066 (MYSQL_CHECK_RPC)
CMake Error at /usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
Call Stack (most recent call first):
/usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-3.22/Modules/FindPkgConfig.cmake:99 (find_package_handle_standard_args)
cmake/pkg-config.cmake:37 (FIND_PACKAGE)
cmake/rpc.cmake:62 (MYSQL_CHECK_PKGCONFIG)
CMakeLists.txt:2066 (MYSQL_CHECK_RPC)
-- Configuring incomplete, errors occurred!
See also "/usr/local/src/mysql-8.0.42/CMakeFiles/CMakeOutput.log".
See also "/usr/local/src/mysql-8.0.42/CMakeFiles/CMakeError.log".
安装pkg-config包:
apt install -y pkg-config
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/src/mysql-8.0.42
执行make:
make -j $(nproc) && make install
总结编译过程:
# 安装依赖包
apt update
apt install -y cmake g++ libssl-dev libncurses5-dev pkg-config
# 进入mysql包解压的目录
cd mysql-8.0.42/
# 执行cmake
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
# 执行make
make -j $(nproc) && make install
2.4.1.4.11 Ubuntu Server 18.04 LTS
进入mysql包解压的目录:
cd mysql-8.0.42/
安装cmake包:
apt update
apt install -y cmake
执行cmake:
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at CMakeLists.txt:110 (CMAKE_MINIMUM_REQUIRED):
CMake 3.11.2 or higher is required. You are running version 3.10.2 # 需要 CMake 3.11.2 或更高版本。您运行的是版本 3.10.2。
-- Configuring incomplete, errors occurred!
安装cmake:
去“https://cmake.org/download/”网址下载cmake二进制包,如图55所示。
图55 下载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).
再次进入mysql包解压的目录:
cd mysql-8.0.42/
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning:
No source or binary directory provided. Both will be assumed to be the
same as the current working directory, but note that this warning will
become a fatal error in future CMake releases.
-- Running cmake version 3.31.7
-- Found Git: /usr/bin/git (found version "2.17.1")
-- Looking for gcc-8 on Ubuntu 18.04
CMake Warning at CMakeLists.txt:440 (MESSAGE):
Could not find gcc-8
CMake Error at CMakeLists.txt:441 (MESSAGE):
Please do 'apt install gcc-8 g++-8' # 提示,安装gcc-8和g++-8。
or set CMAKE_C_COMPILER and CMAKE_CXX_COMPILER explicitly.
-- Configuring incomplete, errors occurred!
安装g++包:
apt install -y gcc-8 g++-8
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
Not a supported openssl version in WITH_SSL=system.
Make sure you have specified a supported SSL version.
Valid options are :
openssl[0-9]+ (use alternative system library)
yes (synonym for system)
</path/to/custom/openssl/installation>
CMake Error at cmake/ssl.cmake:84 (MESSAGE):
Please install the appropriate openssl developer package. # 提示,请安装相应的 openssl 开发人员软件包。
Call Stack (most recent call first):
cmake/ssl.cmake:380 (FATAL_SSL_NOT_FOUND_ERROR)
CMakeLists.txt:1826 (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/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at cmake/readline.cmake:93 (MESSAGE):
Curses library not found. Please install appropriate package,
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。
Call Stack (most recent call first):
cmake/readline.cmake:127 (FIND_CURSES)
cmake/readline.cmake:221 (MYSQL_USE_BUNDLED_EDITLINE)
CMakeLists.txt:1930 (MYSQL_CHECK_EDITLINE)
-- Configuring incomplete, errors occurred!
安装libncurses5-dev包:
apt install -y libncurses5-dev
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at cmake/pkg-config.cmake:30 (MESSAGE):
Cannot find pkg-config. You need to install the required package: # 提示,找不到 pkg-config。您需要安装所需的软件包:
Debian/Ubuntu: apt install pkg-config
RedHat/Fedora/Oracle Linux: yum install pkg-config
SuSE: zypper install pkg-config
Call Stack (most recent call first):
cmake/rpc.cmake:62 (MYSQL_CHECK_PKGCONFIG)
CMakeLists.txt:2066 (MYSQL_CHECK_RPC)
CMake Error at /usr/local/cmake-3.31.7-linux-x86_64/share/cmake-3.31/Modules/FindPackageHandleStandardArgs.cmake:233 (message):
Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
Call Stack (most recent call first):
/usr/local/cmake-3.31.7-linux-x86_64/share/cmake-3.31/Modules/FindPackageHandleStandardArgs.cmake:603 (_FPHSA_FAILURE_MESSAGE)
/usr/local/cmake-3.31.7-linux-x86_64/share/cmake-3.31/Modules/FindPkgConfig.cmake:114 (find_package_handle_standard_args)
cmake/pkg-config.cmake:37 (FIND_PACKAGE)
cmake/rpc.cmake:62 (MYSQL_CHECK_PKGCONFIG)
CMakeLists.txt:2066 (MYSQL_CHECK_RPC)
-- Configuring incomplete, errors occurred!
安装pkg-config包:
apt install -y pkg-config
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
-- Configuring done (22.4s)
-- Generating done (3.6s)
-- Build files have been written to: /usr/local/src/mysql-8.0.42
执行make:
make -j $(nproc) && make install
总结编译过程:
# 安装依赖包
apt update
apt install -y gcc-8 g++-8 libssl-dev libncurses5-dev pkg-config
# 安装cmake
wget https://github.com/Kitware/CMake/releases/download/v3.31.7/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/
# 进入mysql包解压的目录
cd mysql-8.0.42/
# 执行cmake
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
# 执行make
make -j $(nproc) && make install
2.4.1.4.12 Debian 13
进入mysql包解压的目录:
cd mysql-8.0.42/
安装cmake包:
apt update
apt install -y cmake
执行cmake:
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at CMakeLists.txt:585 (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 中),需要安装g++。
-- Configuring incomplete, errors occurred!
安装g++包:
apt install -y g++
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at cmake/ssl.cmake:84 (MESSAGE):
Please install the appropriate openssl developer package. # 提示,请安装相应的 openssl 开发人员软件包。
Call Stack (most recent call first):
cmake/ssl.cmake:380 (FATAL_SSL_NOT_FOUND_ERROR)
CMakeLists.txt:1826 (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/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at cmake/readline.cmake:93 (MESSAGE):
Curses library not found. Please install appropriate package,
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。
Call Stack (most recent call first):
cmake/readline.cmake:127 (FIND_CURSES)
cmake/readline.cmake:221 (MYSQL_USE_BUNDLED_EDITLINE)
CMakeLists.txt:1930 (MYSQL_CHECK_EDITLINE)
-- Configuring incomplete, errors occurred!
安装libncurses5-dev包:
apt install -y libncurses5-dev
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Warning at cmake/pkg-config.cmake:30 (MESSAGE):
Cannot find pkg-config. You need to install the required package: # 找不到 pkg-config。您需要安装所需的软件包:
Debian/Ubuntu: apt install pkg-config
RedHat/Fedora/Oracle Linux: yum install pkg-config
SuSE: zypper install pkg-config
Call Stack (most recent call first):
cmake/rpc.cmake:62 (MYSQL_CHECK_PKGCONFIG)
CMakeLists.txt:2066 (MYSQL_CHECK_RPC)
CMake Error at /usr/share/cmake-3.31/Modules/FindPackageHandleStandardArgs.cmake:233 (message):
Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
Call Stack (most recent call first):
/usr/share/cmake-3.31/Modules/FindPackageHandleStandardArgs.cmake:603 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-3.31/Modules/FindPkgConfig.cmake:114 (find_package_handle_standard_args)
cmake/pkg-config.cmake:37 (FIND_PACKAGE)
cmake/rpc.cmake:62 (MYSQL_CHECK_PKGCONFIG)
CMakeLists.txt:2066 (MYSQL_CHECK_RPC)
-- Configuring incomplete, errors occurred!
安装pkg-config包:
apt install -y pkg-config
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
...
CMake Error at cmake/systemd.cmake:60 (MESSAGE):
Unable to detect systemd support on build machine, Aborting cmake build. # 无法在生成计算机上检测到systemd支持,正在中止cmake生成。
Call Stack (most recent call first):
cmake/systemd.cmake:80 (MYSQL_CHECK_SYSTEMD)
CMakeLists.txt:1597 (INCLUDE)
-- Configuring incomplete, errors occurred!
在编译参数里面删除下面内容:
-DWITH_SYSTEMD=1
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1
...
CMake Warning at cmake/rpc.cmake:41 (MESSAGE):
Cannot find RPC development libraries. You need to install the required
packages:
Debian/Ubuntu: apt install libtirpc-dev
RedHat/Fedora/Oracle Linux: yum install libtirpc-devel
SuSE: zypper install glibc-devel
Call Stack (most recent call first):
cmake/rpc.cmake:112 (WARN_MISSING_SYSTEM_TIRPC)
CMakeLists.txt:2066 (MYSQL_CHECK_RPC)
CMake Error at cmake/rpc.cmake:113 (MESSAGE):
Could not find rpc/rpc.h in /usr/include or /usr/include/tirpc
Call Stack (most recent call first):
CMakeLists.txt:2066 (MYSQL_CHECK_RPC)
-- Configuring incomplete, errors occurred!
安装libtirpc-dev包:
apt install -y libtirpc-dev
继续执行cmake:
# 再次执行cmake之前先删除“CMakeCache.txt”文件
rm -f CMakeCache.txt
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1
...
-- Configuring done (47.7s)
-- Generating done (3.8s)
-- Build files have been written to: /usr/local/src/mysql-8.0.42
执行make:
make -j $(nproc) && make install
总结编译过程:
# 安装依赖包
apt update
apt install -y cmake g++ libssl-dev libncurses5-dev pkg-config libtirpc-dev
# 进入mysql包解压的目录
cd mysql-8.0.42/
# 执行cmake
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/mysql-8.0.42/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1
# 执行make
make -j $(nproc) && make install
2.4.1.5 准备环境变量
echo 'PATH=/apps/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
chown -R mysql:mysql /apps/mysql/
2.4.1.6 生成数据库文件
# /data/mysql 会自动生成,但是/data/必须事先存在
# --initialize会生成一个初始化密码,--initialize-insecure生成空密码,两种方式任选一种
# 生成初始化密码
mysqld --initialize --user=mysql --datadir=/data/mysql
2025-04-30T14:21:27.126347Z 0 [System] [MY-015017] [Server] MySQL Server Initialization - start.
2025-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
2025-04-30T14:21:27.133400Z 0 [Warning] [MY-013242] [Server] --character-set-server: 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.
2025-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.
2025-04-30T14:21:27.151145Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2025-04-30T14:21:27.413116Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2025-04-30T14:21:28.313966Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: q&VUtowtA6!. # “q&VUtowtA6!.”这个就是初始化密码
2025-04-30T14:21:29.694317Z 0 [System] [MY-015018] [Server] MySQL Server Initialization - end.
# 生成空密码的root用户
[root@rocky10 mysql-8.0.42]# mysqld --initialize-insecure --user=mysql --basedir=/apps/mysql --datadir=/data/mysql
2025-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
2025-09-14T07:05:24.592387Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2025-09-14T07:05:24.790320Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2025-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 准备配置文件
cat > /etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/apps/mysql/
datadir=/data/mysql
port=3306
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
port=3306
socket=/data/mysql/mysql.sock
EOF
2.4.1.8 准备启动脚本并启动服务
# Rocky、Almalinux、CentOS、openEuler、AnolisOS、OpenCloudOS、 Kylin Server、UOS Server、openSUSE
cp /apps/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
# Ubuntu Server 24.04 LTS
cp /apps/mysql/usr/lib/systemd/system/mysqld.service /lib/systemd/system/
# Ubuntu Server 18.04/20.04/22.04和Debian 11/12没有mysqld.service,需要单独写配置文件
cat > /lib/systemd/system/mysqld.service <<EOF
# Copyright (c) 2015, 2025, Oracle and/or its affiliates.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License, version 2.0,
# as published by the Free Software Foundation.
#
# This program is designed to work with certain software (including
# but not limited to OpenSSL) that is licensed under separate terms,
# as designated in a particular file or component or in included license
# documentation. The authors of MySQL hereby grant you an additional
# permission to link the program and your derivative works with the
# separately licensed software that they have either included with
# the program or referenced in the documentation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License, version 2.0, for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# systemd service file for MySQL forking server
#
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network-online.target
Wants=network-online.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=notify
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
# Execute pre and post scripts as root
# hence, + prefix is used
# Needed to create system tables
ExecStartPre=+/apps/mysql/bin/mysqld_pre_systemd
# Start main service
ExecStart=/apps/mysql/bin/mysqld $MYSQLD_OPTS
# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql
# Sets open_files_limit
LimitNOFILE = 10000
Restart=on-failure
RestartPreventExitStatus=1
# Set enviroment variable MYSQLD_PARENT_PID. This is required for restart.
Environment=MYSQLD_PARENT_PID=1
PrivateTmp=false
EOF
# Debian 13没有mysqld.service,需要单独写配置文件
cat > /lib/systemd/system/mysqld.service <<EOF
[Unit]
Description=MySQL Server
After=network.target
[Service]
User=mysql
Group=mysql
ExecStart=/apps/mysql/bin/mysqld --defaults-file=/etc/my.cnf
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload && systemctl enable --now mysqld
2.4.1.9 修改口令
# 如果使用的是空密码,就不需要修改口令
mysqladmin -u root -p'q&VUtowtA6!.' password 123456
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
2.4.1.10 登录测试
[root@rocky10 mysql-8.0.42]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.42 Source distribution
Copyright (c) 2000, 2025, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> status
--------------
mysql Ver 8.0.42 for Linux on x86_64 (Source distribution)
Connection id: 8
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 8.0.42 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/mysql/mysql.sock
Binary data as: Hexadecimal
Uptime: 2 min 56 sec
Threads: 2 Questions: 5 Slow queries: 0 Opens: 120 Flush tables: 3 Open tables: 36 Queries per second avg: 0.028
--------------
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.01 sec)
mysql> exit
Bye
2.4.1.11 一键安装MySQL 8.0源码编译的脚本
Shell脚本源码地址:
Gitee:https://gitee.com/raymond9/shell
Github:https://github.com/raymond999999/shell
可以去上面的Gitee或Github代码仓库拉取脚本。
[root@rocky10 ~]# cat install_mysql_8.0_source_v2.sh
#!/bin/bash
#
#**********************************************************************************
#Author: Raymond
#QQ: 88563128
#MP: Raymond运维
#Date: 2025-09-15
#FileName: install_mysql_8.0_source_v2.sh
#URL: https://wx.zsxq.com/group/15555885545422
#Description: The mysql 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/mysql
DATA_DIR=/data/mysql
MYSQL_URL='https://cdn.mysql.com//Downloads/MySQL-8.0/'
MYSQL_FILE='mysql-boost-8.0.42.tar.gz'
CMAKE_URL='https://cmake.org/files/v3.31/'
CMAKE_FILE='cmake-3.31.7-linux-x86_64.tar.gz'
GCC_INSTALL_DIR=/usr
GCC_URL='https://mirrors.cloud.tencent.com/gnu/gcc/gcc-11.5.0/'
GCC_FILE='gcc-11.5.0.tar.gz'
GMP_URL='http://gcc.gnu.org/pub/gcc/infrastructure/'
GMP_FILE='gmp-6.1.0.tar.bz2'
MPFR_URL='http://gcc.gnu.org/pub/gcc/infrastructure/'
MPFR_FILE='mpfr-3.1.6.tar.bz2'
MPC_URL='http://gcc.gnu.org/pub/gcc/infrastructure/'
MPC_FILE='mpc-1.0.3.tar.gz'
ISL_URL='http://gcc.gnu.org/pub/gcc/infrastructure/'
ISL_FILE='isl-0.18.tar.bz2'
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 ${MYSQL_FILE} ];then
${COLOR}"缺少${MYSQL_FILE}文件!"${END}
${COLOR}'开始下载MySQL源码包......'${END}
wget ${MYSQL_URL}${MYSQL_FILE} || { ${COLOR}"MySQL源码包下载失败!"${END}; exit; }
else
${COLOR}"${MYSQL_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_gcc_file(){
if [ ! -e ${GCC_FILE} ];then
${COLOR}"缺少${GCC_FILE}文件!"${END}
${COLOR}'开始下载gcc源码包......'${END}
wget ${GCC_URL}${GCC_FILE} || { ${COLOR}"gcc源码包下载失败!"${END}; exit; }
else
${COLOR}"${GCC_FILE}相关文件已准备好!"${END}
fi
}
check_file(){
cd ${SRC_DIR}
check_mysql_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
if [ ${MAIN_NAME} == 'Kylin' -a ${MAIN_VERSION_ID} == 10 ];then
check_gcc_file
fi
if [ ${MAIN_NAME} == 'UOS' -a ${MAIN_VERSION_ID} == 20 ];then
check_gcc_file
fi
if [ ${MAIN_NAME} == 'openSUSE' -a ${MAIN_VERSION_ID} == 15 ];then
check_gcc_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_gcc(){
${COLOR}'开始编译安装gcc,请稍等......'${END}
tar xf ${GCC_FILE}
GCC_DIR=`echo ${GCC_FILE}| sed -nr 's/^(.*[0-9]).*/\1/p'`
cd ${GCC_DIR}
wget ${GMP_URL}${GMP_FILE} || { ${COLOR}"gmp源码包下载失败!"${END}; exit; }
wget ${MPFR_URL}${MPFR_FILE} || { ${COLOR}"mpfr源码包下载失败!"${END}; exit; }
wget ${MPC_URL}${MPC_FILE} || { ${COLOR}"mpc源码包下载失败!"${END}; exit; }
wget ${ISL_URL}${ISL_FILE} || { ${COLOR}"isl源码包下载失败!"${END}; exit; }
./contrib/download_prerequisites
mkdir build
cd build
../configure --prefix=${GCC_INSTALL_DIR} --disable-multilib
make -j $(nproc) && make install
[ $? -eq 0 ] && ${COLOR}"gcc编译安装成功!"${END} || { ${COLOR}"gcc编译安装失败,退出!"${END};exit; }
}
install_mysql(){
[ -d ${INSTALL_DIR} ] && { ${COLOR}"MySQL数据库已存在,安装失败!"${END};exit; }
${COLOR}"开始安装MySQL数据库......"${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}
chown -R mysql:mysql ${DATA_DIR}
${COLOR}'开始安装MySQL依赖包,请稍等......'${END}
if [ ${MAIN_NAME} == "Rocky" ];then
if [ ${MAIN_VERSION_ID} == 8 ];then
dnf config-manager --set-enabled powertools
else
dnf config-manager --set-enabled devel
fi
fi
if [ ${MAIN_NAME} == "AlmaLinux" ];then
if [ ${MAIN_VERSION_ID} == 8 ];then
dnf config-manager --set-enabled powertools
else
dnf config-manager --set-enabled crb
fi
fi
if [ ${MAIN_NAME} == "CentOS" ];then
if [ ${MAIN_VERSION_ID} == 8 ];then
dnf config-manager --set-enabled powertools
else
dnf config-manager --set-enabled crb
fi
fi
if [ ${MAIN_NAME} == "OpenCloudOS" -a ${MAIN_VERSION_ID} == 8 ];then
dnf config-manager --set-enabled PowerTools
fi
if [ ${MAIN_NAME} == "Rocky" ];then
if [ ${MAIN_VERSION_ID} == 8 -o ${MAIN_VERSION_ID} == 9 ];then
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
else
yum install -y cmake gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen &> /dev/null
fi
fi
if [ ${MAIN_NAME} == "AlmaLinux" ];then
if [ ${MAIN_VERSION_ID} == 8 -o ${MAIN_VERSION_ID} == 9 ];then
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
else
yum install -y cmake gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen &> /dev/null
fi
fi
if [ ${MAIN_NAME} == "CentOS" ];then
if [ ${MAIN_VERSION_ID} == 7 ];then
yum install -y centos-release-scl &> /dev/null
MIRROR=mirrors.tencent.com
OS_RELEASE_FULL_VERSION=`cat /etc/centos-release | sed -rn 's/^(CentOS Linux release )(.*)( \(Core\))/\2/p'`
sed -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
yum install -y devtoolset-11-gcc devtoolset-11-gcc-c++ devtoolset-11-binutils gcc gcc-c++ openssl-devel ncurses-devel &> /dev/null
elif [ ${MAIN_VERSION_ID} == 8 -o ${MAIN_VERSION_ID} == 9 ];then
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
else
yum install -y cmake gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen &> /dev/null
fi
fi
if [ ${MAIN_NAME} == "openEuler" ];then
if [ ${MAIN_VERSION_ID} == 22 -o ${MAIN_VERSION_ID} == 24 ];then
yum install -y cmake make gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen &> /dev/null
fi
fi
if [ ${MAIN_NAME} == "Anolis" ];then
if [ ${MAIN_VERSION_ID} == 8 -o ${MAIN_VERSION_ID} == 23 ];then
yum install -y cmake gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen &> /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 libtirpc-devel rpcgen &> /dev/null
else
yum install -y cmake gcc gcc-c++ systemd-devel openssl-devel ncurses-devel libtirpc-devel rpcgen &> /dev/null
fi
fi
if [ ${MAIN_NAME} == "Kylin" ];then
yum install -y cmake make gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen &> /dev/null
fi
if [ ${MAIN_NAME} == "UOS" ];then
if [ ${MAIN_VERSION_ID} == 20 ];then
yum install -y cmake ncurses-devel libtirpc-devel rpcgen &> /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 libtirpc-devel rpcgen &> /dev/null
fi
fi
if [ ${MAIN_NAME} == "Ubuntu" ];then
if [ ${MAIN_VERSION_ID} == 18 ];then
apt update && apt install -y gcc-8 g++-8 libssl-dev libncurses5-dev pkg-config
elif [ ${MAIN_VERSION_ID} == 20 -o ${MAIN_VERSION_ID} == 22 ];then
apt update && apt install -y cmake g++ libssl-dev libncurses5-dev pkg-config
else
apt update && apt install -y cmake g++ libssl-dev libncurses5-dev pkg-config libtirpc-dev
fi
fi
if [ ${MAIN_NAME} == 'Debian' ];then
if [ ${MAIN_VERSION_ID} == 11 -o ${MAIN_VERSION_ID} == 12 ];then
apt update && apt install -y cmake g++ libssl-dev libncurses5-dev pkg-config
else
apt update && apt install -y cmake g++ libssl-dev libncurses5-dev pkg-config libtirpc-dev
fi
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
if [ ${MAIN_NAME} == 'Kylin' ];then
if [ ${MAIN_VERSION_ID} == 10 ];then
install_gcc
fi
fi
if [ ${MAIN_NAME} == 'UOS' ];then
if [ ${MAIN_VERSION_ID} == 20 ];then
install_gcc
fi
fi
if [ ${MAIN_NAME} == 'openSUSE' ];then
if [ ${MAIN_VERSION_ID} == 15 ];then
install_gcc
fi
fi
${COLOR}'开始编译安装MySQL,请稍等......'${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 ${MYSQL_FILE}
MYSQL_DIR=`echo ${MYSQL_FILE}| sed -nr 's/^(.*[0-9]).*/\1/p' | cut -d"-" -f 1,3`
cd ${MYSQL_DIR}
if [ ${MAIN_NAME} == "Debian" -a ${MAIN_VERSION_ID} == 13 ];then
cmake . \
-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \
-DMYSQL_DATADIR=${DATA_DIR}/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=${DATA_DIR}/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/${MYSQL_DIR}/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1
else
cmake . \
-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \
-DMYSQL_DATADIR=${DATA_DIR}/ \
-DSYSCONFDIR=/etc/ \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_SSL=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=${DATA_DIR}/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=/usr/local/src/${MYSQL_DIR}/boost/boost_1_77_0/ \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
fi
make -j $(nproc) && make install
[ $? -eq 0 ] && ${COLOR}"MySQL编译安装成功!"${END} || { ${COLOR}"MySQL编译安装失败,退出!"${END};exit; }
echo 'PATH='${INSTALL_DIR}'/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
chown -R mysql:mysql ${INSTALL_DIR}
mysqld --initialize-insecure --user=mysql --basedir=${INSTALL_DIR} --datadir=${DATA_DIR}
cat > /etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=${INSTALL_DIR}
datadir=${DATA_DIR}
port=3306
socket=${DATA_DIR}/mysql.sock
log-error=${DATA_DIR}/mysql.log
pid-file=${DATA_DIR}/mysql.pid
[client]
port=3306
socket=${DATA_DIR}/mysql.sock
EOF
if [ ${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
cp ${INSTALL_DIR}/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
elif [ ${MAIN_NAME} == "Ubuntu" ];then
if [ ${MAIN_VERSION_ID} == 24 ];then
cp ${INSTALL_DIR}/usr/lib/systemd/system/mysqld.service /lib/systemd/system/
fi
elif [ ${MAIN_NAME} == "Debian" ];then
if [ ${MAIN_VERSION_ID} == 13 ];then
cat > /lib/systemd/system/mysqld.service <<EOF
[Unit]
Description=MySQL Server
After=network.target
[Service]
User=mysql
Group=mysql
ExecStart=${INSTALL_DIR}/bin/mysqld --defaults-file=/etc/my.cnf
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
fi
else
cat > /lib/systemd/system//mysqld.service <<EOF
# Copyright (c) 2015, 2025, Oracle and/or its affiliates.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License, version 2.0,
# as published by the Free Software Foundation.
#
# This program is designed to work with certain software (including
# but not limited to OpenSSL) that is licensed under separate terms,
# as designated in a particular file or component or in included license
# documentation. The authors of MySQL hereby grant you an additional
# permission to link the program and your derivative works with the
# separately licensed software that they have either included with
# the program or referenced in the documentation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License, version 2.0, for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# systemd service file for MySQL forking server
#
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network-online.target
Wants=network-online.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=notify
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
# Execute pre and post scripts as root
# hence, + prefix is used
# Needed to create system tables
ExecStartPre=+${INSTALL_DIR}/bin/mysqld_pre_systemd
# Start main service
ExecStart=${INSTALL_DIR}/bin/mysqld $MYSQLD_OPTS
# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql
# Sets open_files_limit
LimitNOFILE = 10000
Restart=on-failure
RestartPreventExitStatus=1
# Set enviroment variable MYSQLD_PARENT_PID. This is required for restart.
Environment=MYSQLD_PARENT_PID=1
PrivateTmp=false
EOF
fi
systemctl daemon-reload && systemctl enable --now mysqld &> /dev/null
[ $? -ne 0 ] && { ${COLOR}"数据库启动失败,退出!"${END};exit; }
${COLOR}"${FULL_NAME}操作系统,MySQL数据库安装完成!"${END}
}
main(){
check_file
install_mysql
}
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
- 点赞
- 收藏
- 关注作者
评论(0)