看了官网,我向选择二级制安装MYSQL,结果发现针对ORACLE Linux 10,官方只有RPM安装包,没有二进制的10的安装包,有的只是针对 glibc2.28,2.17的二进制安装文件
,没有办法,只有自己动手,使用源码安装。
glibc2.28 针对 red hat linux 8
glibc2.17 针对 red hat linux 7
为了方便操作,尽量使用命令行。
下面具体列出源码操作的步骤:
目录
[4.安装依赖包 make,bison,cmake,gcc-c++,ncurses 等](#4.安装依赖包 make,bison,cmake,gcc-c++,ncurses 等)
1.当前环境
oracle linux 10.1
MYSQL:8.4.8
操作安装:最小化安装即可。默认是带图形安装。
2.下载源码
wget https://dev.mysql.com/get/Downloads/MySQL-8.4/mysql-8.4.8.tar.gz
3.配置YUM源
我这里使用默认配置,但部分包(libtirpc-devel,libfido2-devel)在默认源里找不到,需要开启 ol10_codeready_builder 仓库
ol10_codeready_builder
name=Oracle Linux 10 CodeReady Builder ($basearch) - (Unsupported)
baseurl=https://yum$ociregion.$ocidomain/repo/OracleLinux/OL10/codeready/builder/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1
或者
yum config-manager --enable ol10_codeready_builder
4.安装依赖包 make,bison,cmake,gcc-c++,ncurses 等
这下面这些包都可以通过yum安装
yum install -y gcc gcc-c++
yum install -y ncurses-devel
yum install -y cmake
yum install -y libaio
yum install -y bison
yum install -y libtirpc-devel
yum install -y rpcgen
yum install -y cyrus-sasl-devel
yum install -y openldap-devel
yum install -y libfido2-devel
yum install libquadmath-devel
5、cmake
解压源码
tar xvf mysql-8.4.8.tar.gz
cd mysql-8.4.8
mkdir bld
cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr/local/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 \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_SYSTEMD=1
编译选项说明:
-DCMAKE_INSTALL_PREFIX# MariaDB 的安装目录
-DMYSQL_DATADIR# MariaDB 数据存储路径
-DSYSCONFDIR# 配置文件目录
-DWITH_INNOBASE_STORAGE_ENGINE# 是否安装 innodb 存储引擎 - 参数:1 or 0
-DWITH_ARCHIVE_STORAGE_ENGINE# 是否安装 archive 存储引擎 - 参数:1 or 0
-DWITH_BLACKHOLE_STORAGE_ENGINE# 是否安装 blackhole 存储引擎 - 参数:1 or 0
-DWITH_DEBUG# 是 MariaDB 编译时的一个 CMake 参数,用于启用或禁用调试模式,1是启用,0是禁用
-DWITH_SSL# 用于指定是否启用 SSL 支持,system是使用系统已安装的 OpenSSL(推荐,依赖系统包)。
-DWITH_LIBWRAP# 用于控制是否启用 libwrap(TCP Wrappers)支持,0是禁用 libwrap,不启用 TCP Wrappers 支持,避免潜在的性能影响
-DENABLED_LOCAL_INFILE# 是否开启 load data infile 命令 - 参数:1 or 0
-DMYSQL_UNIX_ADDR# Unix socket 文件路径
-DDEFAULT_CHARSET# 默认字符集
-DDEFAULT_COLLATION# 校验字符
-DWITH_BOOST# 用于控制是否在构建项目时启用对 Boost 库 的支持。
-DFORCE_INSOURCE_BUILD# 用于 强制在源码目录内进行构建(in-source build),而不是推荐的外源码构建(out-of-source build)。设置该选项后:允许或强制你在源码目录中直接运行 cmake . 和 make ,不需要单独建 build 目录。
-DWITH_SYSTEMD# 是否 systemctl 管理 - 参数:1 or 0
6、编译安装
make -j$(nproc) && make install
7.创建用户
useradd -r -s /sbin/nologin mysql
8、建立数据目录
mkdir -p /data/mysql/
mkdir -p /data/mysql/data
mkdir -p /data/mysql/tmp
mkdir -p /data/mysql/binlogs
mkdir -p /data/mysql/undolog
mkdir -p /data/mysql/logs
chown -R mysql:mysql /data/mysql
chown -R mysql:mysql /usr/local/mysql
9.设置环境变量
echo "export PATH=/usr/local/mysql/bin:$PATH " >> ~/.bash_profile
source ~/.bash_profile
10.创建参数文件
cat /etc/my.cnf
mysqld
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql/data
socket=/data/mysql/tmp/mysqld.sock
log-error = /data/mysql/logs/error.log
pid-file = mysqld.pid
client
socket=/data/mysql/tmp/mysqld.sock
11.初始化
mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql
grep -i '\<temporary password\>' /data/mysql/logs/error.log
2026-03-29T23:34:29.803140+08:00 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: aTko<Zb&h6yy
12、启动数据库
mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &
13、修改密码
mysql -S /data/mysql/tmp/mysqld.sock -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'sztech_4U' PASSWORD EXPIRE NEVER ;
mysql> create USER 'root'@'127.0.0.1' IDENTIFIED BY 'sztech_4U' PASSWORD EXPIRE NEVER ;
mysql> grant all privileges on *.* to 'root'@'127.0.0.1' with grant option;
mysql> create USER 'root'@'%' IDENTIFIED BY 'sztech_4U' PASSWORD EXPIRE NEVER ;
mysql> grant all privileges on *.* to 'root'@'%' with grant option;
14、登录验证
root@sz-mgr-db01 \~\]# mysql -uroot -h127.0.0.1 -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \\g. Your MySQL connection id is 10 Server version: 8.4.8 Source distribution Copyright (c) 2000, 2026, 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 8.4在ORACLE LINUX 10.1上的源码安装完毕。 ## 15、加入SYSTEMD 把 MySQL 8.4.8 加入 systemd 并设置开机自启 # 1. 创建服务文件 cat \> /etc/systemd/system/mysqld.service \<\<'EOF' \[Unit
Description=MySQL 8.4.8 Server
Documentation=man:mysqld(8)
After=network.target syslog.target
Service
User=mysql
Group=mysql
Type=notify
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
ExecReload=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --reload
ExecStop=/usr/local/mysql/bin/mysqladmin shutdown
TimeoutSec=600
PrivateTmp=false
LimitNOFILE=65535
LimitNPROC=65535
Restart=on-failure
RestartSec=5
Install
WantedBy=multi-user.target
EOF
2. 重新加载 systemd
systemctl daemon-reload
3. 开机自启并启动 MySQL
systemctl enable --now mysqld
4. 查看状态
systemctl status mysqld
附录:
参数文件
cat /etc/my.cnf
client
port = 3306
socket = /data/mysql/tmp/mysqld.sock
mysql
prompt="\u@\h \R:\m:\s [\d]> "
no-auto-rehash
mysqld
user = mysql
port = 3306
admin_address = 127.0.0.1
basedir = /usr/local/mysql
datadir = /data/mysql/data
socket = /data/mysql/tmp/mysqld.sock
pid-file = mysql.pid
character-set-server = utf8mb4
skip_name_resolve = 1
open_files_limit = 65535
back_log = 1024
max_connections = 1024
max_connect_errors = 1000000
table_open_cache = 1024
table_definition_cache = 1024
table_open_cache_instances = 64
thread_stack = 512K
external-locking = FALSE
max_allowed_packet = 32M
sort_buffer_size = 4M
join_buffer_size = 4M
thread_cache_size = 1536
interactive_timeout = 600
wait_timeout = 600
tmp_table_size = 32M
max_heap_table_size = 32M
slow_query_log = 1
log_timestamps = SYSTEM
slow_query_log_file = /data/mysql/logs/slow.log
log-error = /data/mysql/logs/error.log
long_query_time = 0.1
log_queries_not_using_indexes =1
log_throttle_queries_not_using_indexes = 60
min_examined_row_limit = 100
log_slow_admin_statements = 1
log_slow_slave_statements = 1
server-id = 1423306
log-bin = /data/mysql/binlogs/mysql-bin
sync_binlog = 1
binlog_cache_size = 4M
max_binlog_cache_size = 2G
max_binlog_size = 1G
binlog_expire_logs_seconds=2592000
gtid_mode = on
enforce_gtid_consistency = 1
binlog_checksum=NONE
#binlog_format = row
binlog_row_image=FULL
relay_log_recovery = 1
relay-log-purge = 1
key_buffer_size = 32M
read_buffer_size = 8M
read_rnd_buffer_size = 4M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
lock_wait_timeout = 3600
explicit_defaults_for_timestamp = 1
innodb_thread_concurrency = 0
innodb_sync_spin_loops = 100
innodb_spin_wait_delay = 30
transaction_isolation = READ-COMMITTED
innodb_buffer_pool_size = 2048M
innodb_buffer_pool_instances = 4
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_data_file_path = ibdata1:1G:autoextend
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 32M
innodb_max_undo_log_size = 4G
innodb_undo_directory = /data/mysql/undolog
some var for MySQL 8
log_error_verbosity = 3
innodb_print_ddl_logs = 1
binlog_expire_logs_seconds = 2592000
#innodb_dedicated_server = 0
mysqld_safe
#malloc-lib=/usr/local/mysql/lib/jmalloc.so
nice=-19
open-files-limit=65535