基于ORACLE LINUX 10.1 MYSQL 8.4 源码安装

看了官网,我向选择二级制安装MYSQL,结果发现针对ORACLE Linux 10,官方只有RPM安装包,没有二进制的10的安装包,有的只是针对 glibc2.28,2.17的二进制安装文件

,没有办法,只有自己动手,使用源码安装。

glibc2.28 针对 red hat linux 8

glibc2.17 针对 red hat linux 7

为了方便操作,尽量使用命令行。

下面具体列出源码操作的步骤:

目录

1.当前环境

2.下载源码

3.配置YUM源

[4.安装依赖包 make,bison,cmake,gcc-c++,ncurses 等](#4.安装依赖包 make,bison,cmake,gcc-c++,ncurses 等)

5、cmake

6、编译安装

7.创建用户

8、建立数据目录

9.设置环境变量

10.创建参数文件

11.初始化

12、启动数据库

13、修改密码

14、登录验证

15、加入SYSTEMD


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

相关推荐
齐齐大魔王2 小时前
linux-系统函数
linux·运维·microsoft
乐之者v2 小时前
mysql 的查询条件放在 join on 和 Where 的区别:
mysql
Lugas Luo2 小时前
利用 Claude 辅助 Linux 嵌入式开发的高阶工作流Top Steps
linux
麻花20132 小时前
Oracle 数据泵导出与还原操作指南
数据库·oracle
卤炖阑尾炎2 小时前
MySQL 全量、增量备份与恢复实战指南
mysql·adb
the sun342 小时前
我的第一个字符驱动:基于Linux2.4之前版本的古法编程
linux·驱动开发
zhangren024682 小时前
Laravel7.x新特性全面解析
数据库·mysql·adb·php
鸽芷咕2 小时前
Oracle替换工程实践深度解析:金仓数据库破解PL/SQL“零改造”迁移难题
数据库·sql·oracle
拾贰_C2 小时前
【Ubuntu | Nvidia | installition0】Ubuntu安装Nvidia驱动
linux·运维·ubuntu