进入mysql包解压的目录:
1cd mysql-8.4.5/安装cmake包:
1apt update
2aptinstall-y cmake执行cmake:
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-DFORCE_INSOURCE_BUILD=1\
16-DWITH_SYSTEMD=1
17...
18CMake Error at CMakeLists.txt:514 (PROJECT):
19 No CMAKE_CXX_COMPILER could be found.
20
21 Tell CMake where to find the compiler by setting either the environment
22 variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
23 to the compiler, or to the compiler name if it is in the PATH.# 提示,通过设置环境变量 “CXX” 或 CMake 缓存条目CMAKE_CXX_COMPILER完整路径添加到编译器,或者添加到编译器名称(如果它在 PATH 中)。
24
25
26-- Configuring incomplete, errors occurred!安装g++包:
1aptinstall-y g++继续执行cmake:
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-DFORCE_INSOURCE_BUILD=1\
19-DWITH_SYSTEMD=1
20...
21CMake Error at cmake/ssl.cmake:85 (MESSAGE):
22 Please install the appropriate openssl developer package. # 提示,请安装相应的 openssl 开发人员软件包。
23
24Call Stack (most recent call first):
25 cmake/ssl.cmake:370 (FATAL_SSL_NOT_FOUND_ERROR)
26 cmake/ssl.cmake:551 (FIND_SYSTEM_OPENSSL)
27 CMakeLists.txt:1884 (MYSQL_CHECK_SSL)
28
29
30-- Configuring incomplete, errors occurred!安装libssl-dev包:
1aptinstall-y libssl-dev继续执行cmake:
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-DFORCE_INSOURCE_BUILD=1\
19-DWITH_SYSTEMD=1
20...
21CMake Error at cmake/readline.cmake:93 (MESSAGE):
22 Curses library not found. Please install appropriate package,
23
24 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。
25Call Stack (most recent call first):
26 cmake/readline.cmake:127 (FIND_CURSES)
27 cmake/readline.cmake:221 (MYSQL_USE_BUNDLED_EDITLINE)
28 CMakeLists.txt:1966 (MYSQL_CHECK_EDITLINE)
29
30
31-- Configuring incomplete, errors occurred!安装libncurses5-dev包:
1aptinstall-y libncurses5-dev继续执行cmake:
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-DFORCE_INSOURCE_BUILD=1\
19-DWITH_SYSTEMD=1
20...
21CMake Warning at cmake/pkg-config.cmake:30 (MESSAGE):
22 Cannot find pkg-config. You need to install the required package: # 找不到 pkg-config。您需要安装所需的软件包:
23
24 Debian/Ubuntu: aptinstall pkg-config
25 RedHat/Fedora/Oracle Linux: yum install pkg-config
26 SuSE: zypperinstall pkg-config
27
28Call Stack (most recent call first):
29 cmake/rpc.cmake:62 (MYSQL_CHECK_PKGCONFIG)
30 CMakeLists.txt:2097 (MYSQL_CHECK_RPC)
31
32
33CMake Error at /usr/share/cmake-3.31/Modules/FindPackageHandleStandardArgs.cmake:233 (message):
34 Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
35Call Stack (most recent call first):
36 /usr/share/cmake-3.31/Modules/FindPackageHandleStandardArgs.cmake:603 (_FPHSA_FAILURE_MESSAGE)
37 /usr/share/cmake-3.31/Modules/FindPkgConfig.cmake:114 (find_package_handle_standard_args)
38 cmake/pkg-config.cmake:37 (FIND_PACKAGE)
39 cmake/rpc.cmake:62 (MYSQL_CHECK_PKGCONFIG)
40 CMakeLists.txt:2097 (MYSQL_CHECK_RPC)
41
42
43-- Configuring incomplete, errors occurred!安装pkg-config包:
1aptinstall-y pkg-config继续执行cmake:
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-DFORCE_INSOURCE_BUILD=1\
19-DWITH_SYSTEMD=1
20...
21CMake Error at cmake/systemd.cmake:60 (MESSAGE):
22 Unable to detect systemd support on build machine, Aborting cmake build.
23Call Stack (most recent call first):
24 cmake/systemd.cmake:80 (MYSQL_CHECK_SYSTEMD)
25 CMakeLists.txt:1555 (INCLUDE)
26
27
28-- Configuring incomplete, errors occurred!在编译参数里面删除下面内容:
1-DWITH_SYSTEMD=1继续执行cmake:
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-DFORCE_INSOURCE_BUILD=1
19...
20CMake Warning at cmake/rpc.cmake:41 (MESSAGE):
21 Cannot find RPC development libraries. You need to install the required
22 packages: # 提示,找不到 RPC 开发库。您需要安装所需的包:
23
24 Debian/Ubuntu: aptinstall libtirpc-dev
25 RedHat/Fedora/Oracle Linux: yum install libtirpc-devel
26 SuSE: zypperinstall glibc-devel
27
28Call Stack (most recent call first):
29 cmake/rpc.cmake:107 (WARN_MISSING_SYSTEM_TIRPC)
30 CMakeLists.txt:2097 (MYSQL_CHECK_RPC)
31
32
33CMake Error at cmake/rpc.cmake:108 (MESSAGE):
34 Could not find rpc/rpc.h in /usr/include or /usr/include/tirpc
35Call Stack (most recent call first):
36 CMakeLists.txt:2097 (MYSQL_CHECK_RPC)
37
38
39-- Configuring incomplete, errors occurred!安装libtirpc-dev包:
1aptinstall-y libtirpc-dev继续执行cmake:
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-DFORCE_INSOURCE_BUILD=1
19...
20-- Configuring done(34.5s)
21-- Generating done(4.7s)
22-- Build files have been written to: /usr/local/src/mysql-8.4.5执行make:
1make-j$(nproc)&&makeinstall总结编译过程:
1# 安装依赖包
2apt update
3aptinstall-y cmake g++ libssl-dev libncurses5-dev pkg-config libtirpc-dev
4
5# 进入mysql包解压的目录
6cd mysql-8.4.5/
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-DFORCE_INSOURCE_BUILD=1
24
25# 执行make
26make-j$(nproc)&&makeinstall1echo'PATH=/apps/mysql/bin:$PATH'> /etc/profile.d/mysql.sh
2. /etc/profile.d/mysql.sh
3
4chown-R mysql:mysql /apps/mysql/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.4.5]# mysqld --initialize-insecure --user=mysql --basedir=/apps/mysql --datadir=/data/mysql
172025-09-14T13:44:06.074773Z 0[System][MY-015017][Server] MySQL Server Initialization - start.
182025-09-14T13:44:06.079503Z 0[System][MY-013169][Server] /apps/mysql/bin/mysqld (mysqld 8.4.5) initializing of server in progress as process 75104
192025-09-14T13:44:06.103501Z 1[System][MY-013576][InnoDB] InnoDB initialization has started.
202025-09-14T13:44:06.376707Z 1[System][MY-013577][InnoDB] InnoDB initialization has ended.
212025-09-14T13:44:07.103686Z 6[Warning][MY-010453][Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
222025-09-14T13:44:08.629823Z 0[System][MY-015018][Server] MySQL Server Initialization - end.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
14EOF1# 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 LTS和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 mysqld1# 如果使用的是空密码,就不需要修改口令
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.1mysql
2mysql: [Warning] Using a password on the command line interface can be insecure.
3Welcome to the MySQL monitor. Commands end with ; or \g.
4Your MySQL connection id is 11
5Server version: 8.4.5 Source distribution
6
7Copyright (c)2000, 2025, Oracle and/or its affiliates.
8
9Oracle is a registered trademark of Oracle Corporation and/or its
10affiliates. Other names may be trademarks of their respective
11owners.
12
13Type 'help;' or '\h'for help. Type '\c' to clear the current input statement.
14
15mysql> status
16--------------
17mysql Ver 8.4.5 for Linux on x86_64 (Source distribution)
18
19Connection id: 11
20Current database:
21Current user: root@localhost
22SSL: Not in use
23Current pager: stdout
24Using outfile: ''
25Using delimiter: ;
26Server version: 8.4.5 Source distribution
27Protocol version: 10
28Connection: Localhost via UNIX socket
29Server characterset: utf8mb4
30Db characterset: utf8mb4
31Client characterset: utf8mb4
32Conn. characterset: utf8mb4
33UNIX socket: /data/mysql/mysql.sock
34Binary data as: Hexadecimal
35Uptime: 8 min 5 sec
36
37Threads: 2 Questions: 9 Slow queries: 0 Opens: 130 Flush tables: 3 Open tables: 46 Queries per second avg: 0.018
38--------------
39
40mysql> show databases;
41+--------------------+
42| Database |
43+--------------------+
44| information_schema |
45| mysql |
46| performance_schema |
47| sys |
48+--------------------+
494 rows inset(0.01 sec)
50
51mysql>exit
52ByeShell脚本源码地址:
Gitee:https://gitee.com/raymond9/shell
Github:https://github.com/raymond999999/shell
可以去上面的Gitee或Github代码仓库拉取脚本。
1[root@rocky10 ~]# cat install_mysql_8.4_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.4_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.4/'
45MYSQL_FILE='mysql-8.4.5.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}=='Anolis'-a${MAIN_VERSION_ID}==8];then
105 check_gcc_file
106fi
107if[${MAIN_NAME}=='OpenCloudOS'-a${MAIN_VERSION_ID}==8];then
108 check_gcc_file
109fi
110if[${MAIN_NAME}=='Kylin'-a${MAIN_VERSION_ID}==10];then
111 check_gcc_file
112fi
113if[${MAIN_NAME}=='UOS'-a${MAIN_VERSION_ID}==20];then
114 check_gcc_file
115fi
116if[${MAIN_NAME}=='openSUSE'-a${MAIN_VERSION_ID}==15];then
117 check_gcc_file
118fi
119}
120
121install_cmake(){
122${COLOR}'开始安装cmake,请稍等......'${END}
123tar xf ${CMAKE_FILE}-C /usr/local/
124CMAKE_DIR=`echo ${CMAKE_FILE}|sed-nr's/^(.*[0-9]).*/\1/p'`
125ln-s /usr/local/${CMAKE_DIR}/bin/cmake /usr/bin/
126}
127
128install_gcc(){
129${COLOR}'开始编译安装gcc,请稍等......'${END}
130tar xf ${GCC_FILE}
131GCC_DIR=`echo ${GCC_FILE}|sed-nr's/^(.*[0-9]).*/\1/p'`
132cd${GCC_DIR}
133wget${GMP_URL}${GMP_FILE}||{${COLOR}"gmp源码包下载失败!"${END};exit;}
134wget${MPFR_URL}${MPFR_FILE}||{${COLOR}"mpfr源码包下载失败!"${END};exit;}
135wget${MPC_URL}${MPC_FILE}||{${COLOR}"mpc源码包下载失败!"${END};exit;}
136wget${ISL_URL}${ISL_FILE}||{${COLOR}"isl源码包下载失败!"${END};exit;}
137 ./contrib/download_prerequisites
138mkdir build
139cd build
140../configure --prefix=${GCC_INSTALL_DIR} --disable-multilib
141make-j$(nproc)&&makeinstall
142[$?-eq0]&&${COLOR}"gcc编译安装成功!"${END}||{${COLOR}"gcc编译安装失败,退出!"${END};exit;}
143}
144
145install_mysql(){
146[-d${INSTALL_DIR}]&&{${COLOR}"MySQL数据库已存在,安装失败!"${END};exit;}
147${COLOR}"开始安装MySQL数据库......"${END}
148if[${MAIN_NAME}=="openSUSE"];then
149id mysql &> /dev/null ||{groupadd-r mysql &&useradd-s /sbin/nologin -d${DATA_DIR}-r-g mysql mysql ;${COLOR}"成功创建mysql用户!"${END};}
150else
151id mysql &> /dev/null ||{useradd-r-s /sbin/nologin -d${DATA_DIR} mysql ;${COLOR}"成功创建mysql用户!"${END};}
152fi
153[-d${DATA_DIR}]||mkdir-p${DATA_DIR}
154chown-R mysql:mysql ${DATA_DIR}
155${COLOR}'开始安装MySQL依赖包,请稍等......'${END}
156if[${MAIN_NAME}=="Rocky"];then
157if[${MAIN_VERSION_ID}==8];then
158 dnf config-manager --set-enabled powertools
159else
160 dnf config-manager --set-enabled devel
161fi
162fi
163if[${MAIN_NAME}=="AlmaLinux"];then
164if[${MAIN_VERSION_ID}==8];then
165 dnf config-manager --set-enabled powertools
166else
167 dnf config-manager --set-enabled crb
168fi
169fi
170if[${MAIN_NAME}=="CentOS"];then
171if[${MAIN_VERSION_ID}==8];then
172 dnf config-manager --set-enabled powertools
173else
174 dnf config-manager --set-enabled crb
175fi
176fi
177if[${MAIN_NAME}=="OpenCloudOS"-a${MAIN_VERSION_ID}==8];then
178 dnf config-manager --set-enabled PowerTools
179fi
180if[${MAIN_NAME}=="Rocky"];then
181if[${MAIN_VERSION_ID}==8-o${MAIN_VERSION_ID}==9];then
182 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
183else
184 yum install-y cmake gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen boost-devel bison &> /dev/null
185fi
186fi
187if[${MAIN_NAME}=="AlmaLinux"];then
188if[${MAIN_VERSION_ID}==8-o${MAIN_VERSION_ID}==9];then
189 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
190else
191 yum install-y cmake gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen boost-devel bison &> /dev/null
192fi
193fi
194if[${MAIN_NAME}=="CentOS"];then
195if[${MAIN_VERSION_ID}==7];then
196 yum install-y centos-release-scl &> /dev/null
197MIRROR=mirrors.tencent.com
198OS_RELEASE_FULL_VERSION=`cat /etc/centos-release |sed-rn's/^(CentOS Linux release )(.*)( \(Core\))/\2/p'`
199sed-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
200 yum install-y devtoolset-11-gcc devtoolset-11-gcc-c++ devtoolset-11-binutil gcc gcc-++ openssl-devel ncurses-devel &> /dev/null
201elif[${MAIN_VERSION_ID}==8-o${MAIN_VERSION_ID}==9];then
202 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
203else
204 yum install-y cmake gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen boost-devel bison &> /dev/null
205fi
206fi
207if[${MAIN_NAME}=="openEuler"];then
208if[${MAIN_VERSION_ID}==22-o${MAIN_VERSION_ID}==24];then
209 yum install-y cmake make gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen &> /dev/null
210fi
211fi
212if[${MAIN_NAME}=="Anolis"];then
213if[${MAIN_VERSION_ID}==8];then
214 yum install-y cmake gcc gcc-c++ bzip2 openssl-devel ncurses-devel libtirpc-devel rpcgen &> /dev/null
215else
216 yum install-y cmake gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen &> /dev/null
217fi
218fi
219if[${MAIN_NAME}=='OpenCloudOS'];then
220if[${MAIN_VERSION_ID}==8];then
221 yum install-y cmake gcc gcc-c++ bzip2 openssl-devel ncurses-devel libtirpc-devel rpcgen &> /dev/null
222else
223 yum install-y cmake gcc gcc-c++ systemd-devel openssl-devel ncurses-devel libtirpc-devel rpcgen &> /dev/null
224fi
225fi
226if[${MAIN_NAME}=="Kylin"];then
227 yum install-y cmake make gcc gcc-c++ openssl-devel ncurses-devel libtirpc-devel rpcgen &> /dev/null
228fi
229if[${MAIN_NAME}=="UOS"];then
230if[${MAIN_VERSION_ID}==20];then
231 yum install-y cmake ncurses-devel libtirpc-devel rpcgen &> /dev/null
232fi
233fi
234if[${MAIN_NAME}=="openSUSE"];then
235if[${MAIN_VERSION_ID}==15];then
236zypperinstall-y cmake gcc gcc-c++ libopenssl-devel ncurses-devel libtirpc-devel rpcgen &> /dev/null
237fi
238fi
239if[${MAIN_NAME}=="Ubuntu"];then
240if[${MAIN_VERSION_ID}==18];then
241 add-apt-repository ppa:ubuntu-toolchain-r/test
242sed-i.bak's@http://ppa.launchpad.net@https://launchpad.proxy.ustclug.org@g' /etc/apt/sources.list.d/ubuntu-toolchain-r-ubuntu-test-bionic.list
243apt update &&aptinstall-y gcc-11 g++-11 libssl-dev libncurses5-dev pkg-config
244 update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 60--slave /usr/bin/g++ g++ /usr/bin/g++-11
245elif[${MAIN_VERSION_ID}==20];then
246 add-apt-repository ppa:ubuntu-toolchain-r/test
247sed-i.bak's@http://ppa.launchpad.net@https://launchpad.proxy.ustclug.org@g' /etc/apt/sources.list.d/ubuntu-toolchain-r-ubuntu-test-bionic.list
248apt update &&aptinstall-y cmake gcc-11 g++-11 libssl-dev libncurses5-dev pkg-config
249 update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 60--slave /usr/bin/g++ g++ /usr/bin/g++-11
250elif[${MAIN_VERSION_ID}==22];then
251apt update &&aptinstall-y cmake g++ libssl-dev libncurses5-dev pkg-config
252else
253apt update &&aptinstall-y cmake g++ libssl-dev libncurses5-dev pkg-config libtirpc-dev
254fi
255fi
256if[${MAIN_NAME}=='Debian'];then
257if[${MAIN_VERSION_ID}==11-o${MAIN_VERSION_ID}==12];then
258apt update &&aptinstall-y cmake g++ libssl-dev libncurses5-dev pkg-config
259else
260apt update &&aptinstall-y cmake g++ libssl-dev libncurses5-dev pkg-config libtirpc-dev
261fi
262fi
263if[${MAIN_NAME}=="CentOS"-a${MAIN_VERSION_ID}==7];then
264 install_cmake
265fi
266if[${MAIN_NAME}=='Ubuntu'-a${MAIN_VERSION_ID}==18];then
267 install_cmake
268fi
269if[${MAIN_NAME}=='Anolis'-a${MAIN_VERSION_ID}==8];then
270 install_gcc
271fi
272if[${MAIN_NAME}=='OpenCloudOS'-a${MAIN_VERSION_ID}==8];then
273 install_gcc
274fi
275if[${MAIN_NAME}=='Kylin'-a${MAIN_VERSION_ID}==10];then
276 install_gcc
277fi
278if[${MAIN_NAME}=='UOS'-a${MAIN_VERSION_ID}==20];then
279 install_gcc
280fi
281if[${MAIN_NAME}=='openSUSE'-a${MAIN_VERSION_ID}==20];then
282 install_gcc
283fi
284${COLOR}'开始编译安装MySQL,请稍等......'${END}
285cd${SRC_DIR}
286if[${MAIN_NAME}=="openEuler"];then
287if[${MAIN_VERSION_ID}==22-o${MAIN_VERSION_ID}==24];then
288 yum install-ytar&> /dev/null
289fi
290fi
291if[${MAIN_NAME}=="Anolis"];then
292if[${MAIN_VERSION_ID}==23];then
293 yum install-ytar&> /dev/null
294fi
295fi
296if[${MAIN_NAME}=="OpenCloudOS"];then
297if[${MAIN_VERSION_ID}==9];then
298 yum install-ytar&> /dev/null
299fi
300fi
301tar xf ${MYSQL_FILE}
302MYSQL_DIR=`echo ${MYSQL_FILE}|sed-nr's/^(.*[0-9]).*/\1/p'`
303cd${MYSQL_DIR}
304if[${MAIN_NAME}=="Debian"-a${MAIN_VERSION_ID}==13];then
305 cmake .\
306-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR}\
307-DMYSQL_DATADIR=${DATA_DIR}/ \
308-DSYSCONFDIR=/etc/ \
309-DWITH_INNOBASE_STORAGE_ENGINE=1\
310-DWITH_ARCHIVE_STORAGE_ENGINE=1\
311-DWITH_BLACKHOLE_STORAGE_ENGINE=1\
312-DWITH_DEBUG=0\
313-DWITH_SSL=system \
314-DWITH_LIBWRAP=0\
315-DENABLED_LOCAL_INFILE=1\
316-DMYSQL_UNIX_ADDR=${DATA_DIR}/mysql.sock \
317-DDEFAULT_CHARSET=utf8mb4 \
318-DDEFAULT_COLLATION=utf8mb4_general_ci \
319-DFORCE_INSOURCE_BUILD=1
320else
321 cmake .\
322-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR}\
323-DMYSQL_DATADIR=${DATA_DIR}/ \
324-DSYSCONFDIR=/etc/ \
325-DWITH_INNOBASE_STORAGE_ENGINE=1\
326-DWITH_ARCHIVE_STORAGE_ENGINE=1\
327-DWITH_BLACKHOLE_STORAGE_ENGINE=1\
328-DWITH_DEBUG=0\
329-DWITH_SSL=system \
330-DWITH_LIBWRAP=0\
331-DENABLED_LOCAL_INFILE=1\
332-DMYSQL_UNIX_ADDR=${DATA_DIR}/mysql.sock \
333-DDEFAULT_CHARSET=utf8mb4 \
334-DDEFAULT_COLLATION=utf8mb4_general_ci \
335-DFORCE_INSOURCE_BUILD=1\
336-DWITH_SYSTEMD=1
337fi
338make-j$(nproc)&&makeinstall
339[$?-eq0]&&${COLOR}"MySQL编译安装成功!"${END}||{${COLOR}"MySQL编译安装失败,退出!"${END};exit;}
340echo'PATH='${INSTALL_DIR}'/bin:$PATH'> /etc/profile.d/mysql.sh
341. /etc/profile.d/mysql.sh
342chown-R mysql:mysql ${INSTALL_DIR}
343 mysqld --initialize-insecure --user=mysql --basedir=${INSTALL_DIR}--datadir=${DATA_DIR}
344cat> /etc/my.cnf <<EOF
345[mysqld]
346user=mysql
347basedir=${INSTALL_DIR}
348datadir=${DATA_DIR}
349port=3306
350socket=${DATA_DIR}/mysql.sock
351log-error=${DATA_DIR}/mysql.log
352pid-file=${DATA_DIR}/mysql.pid
353
354[client]
355port=3306
356socket=${DATA_DIR}/mysql.sock
357EOF
358if[${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
359cp${INSTALL_DIR}/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
360elif[${MAIN_NAME}=="Ubuntu"];then
361if[${MAIN_VERSION_ID}==24];then
362cp${INSTALL_DIR}/usr/lib/systemd/system/mysqld.service /lib/systemd/system/
363fi
364elif[${MAIN_NAME}=="Debian"];then
365if[${MAIN_VERSION_ID}==13];then
366cat> /lib/systemd/system/mysqld.service <<EOF
367[Unit]
368Description=MySQL Server
369After=network.target
370
371[Service]
372User=mysql
373Group=mysql
374ExecStart=${INSTALL_DIR}/bin/mysqld --defaults-file=/etc/my.cnf
375Restart=on-failure
376
377[Install]
378WantedBy=multi-user.target
379EOF
380fi
381else
382cat> /lib/systemd/system//mysqld.service <<EOF
383# Copyright (c) 2015, 2025, Oracle and/or its affiliates.
384#
385# This program is free software; you can redistribute it and/or modify
386# it under the terms of the GNU General Public License, version 2.0,
387# as published by the Free Software Foundation.
388#
389# This program is designed to work with certain software (including
390# but not limited to OpenSSL) that is licensed under separate terms,
391# as designated in a particular file or component or in included license
392# documentation. The authors of MySQL hereby grant you an additional
393# permission to link the program and your derivative works with the
394# separately licensed software that they have either included with
395# the program or referenced in the documentation.
396#
397# This program is distributed in the hope that it will be useful,
398# but WITHOUT ANY WARRANTY; without even the implied warranty of
399# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
400# GNU General Public License, version 2.0, for more details.
401#
402# You should have received a copy of the GNU General Public License
403# along with this program; if not, write to the Free Software
404# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
405#
406# systemd service file for MySQL forking server
407#
408
409[Unit]
410Description=MySQL Server
411Documentation=man:mysqld(8)
412Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
413After=network-online.target
414Wants=network-online.target
415After=syslog.target
416
417[Install]
418WantedBy=multi-user.target
419
420[Service]
421User=mysql
422Group=mysql
423
424Type=notify
425
426# Disable service start and stop timeout logic of systemd for mysqld service.
427TimeoutSec=0
428
429# Execute pre and post scripts as root
430# hence, + prefix is used
431
432# Needed to create system tables
433ExecStartPre=+${INSTALL_DIR}/bin/mysqld_pre_systemd
434
435# Start main service
436ExecStart=${INSTALL_DIR}/bin/mysqld $MYSQLD_OPTS
437
438# Use this to switch malloc implementation
439EnvironmentFile=-/etc/sysconfig/mysql
440
441# Sets open_files_limit
442LimitNOFILE =10000
443
444Restart=on-failure
445
446RestartPreventExitStatus=1
447
448# Set enviroment variable MYSQLD_PARENT_PID. This is required for restart.
449Environment=MYSQLD_PARENT_PID=1
450
451PrivateTmp=false
452EOF
453fi
454 systemctl daemon-reload && systemctl enable--now mysqld &> /dev/null
455[$?-ne0]&&{${COLOR}"数据库启动失败,退出!"${END};exit;}
456${COLOR}"${FULL_NAME}操作系统,MySQL数据库安装完成!"${END}
457}
458
459main(){
460 check_file
461 install_mysql
462}
463
464if[${MAIN_NAME}=="Rocky"];then
465if[${MAIN_VERSION_ID}==8-o${MAIN_VERSION_ID}==9-o${MAIN_VERSION_ID}==10];then
466 main
467fi
468elif[${MAIN_NAME}=="AlmaLinux"];then
469if[${MAIN_VERSION_ID}==8-o${MAIN_VERSION_ID}==9-o${MAIN_VERSION_ID}==10];then
470 main
471fi
472elif[${MAIN_NAME}=="CentOS"];then
473if[${MAIN_VERSION_ID}==7-o${MAIN_VERSION_ID}==8-o${MAIN_VERSION_ID}==9-o${MAIN_VERSION_ID}==10];then
474 main
475fi
476elif[${MAIN_NAME}=="openEuler"];then
477if[${MAIN_VERSION_ID}==22-o${MAIN_VERSION_ID}==24];then
478 main
479fi
480elif[${MAIN_NAME}=="Anolis"];then
481if[${MAIN_VERSION_ID}==8-o${MAIN_VERSION_ID}==23];then
482 main
483fi
484elif[${MAIN_NAME}=='OpenCloudOS'];then
485if[${MAIN_VERSION_ID}==8-o${MAIN_VERSION_ID}==9];then
486 main
487fi
488elif[${MAIN_NAME}=="Kylin"];then
489if[${MAIN_VERSION_ID}==10-o${MAIN_VERSION_ID}==11];then
490 main
491fi
492elif[${MAIN_NAME}=="UOS"];then
493if[${MAIN_VERSION_ID}==20];then
494 main
495fi
496elif[${MAIN_NAME}=="openSUSE"];then
497if[${MAIN_VERSION_ID}==15];then
498 main
499fi
500elif[${MAIN_NAME}=="Ubuntu"];then
501if[${MAIN_VERSION_ID}==18-o${MAIN_VERSION_ID}==20-o${MAIN_VERSION_ID}==22-o${MAIN_VERSION_ID}==24];then
502 main
503fi
504elif[${MAIN_NAME}=='Debian'];then
505if[${MAIN_VERSION_ID}==11-o${MAIN_VERSION_ID}==12-o${MAIN_VERSION_ID}==13];then
506 main
507fi
508else
509${COLOR}"此脚本不支持${FULL_NAME}操作系统!"${END}
510fi原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。