阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Rocky Linux 9 源码包安装Mysql8

633次阅读
没有评论

共计 7736 个字符,预计需要花费 20 分钟才能阅读完成。

Rocky Linux 9 源码包安装 Mysql8

大家好我是星哥,之前介绍了,Rocky Linux 9 源码包安装 Mysql5.7。

本文将介绍如何在 Rocky Linux 9 操作系统上,从源码一步步安装 MySQL 8,为您提供一个稳定、高效且可控的数据库解决方案。

为什么选择源码编译安装 MySQL 8?

尽管通过包管理器安装 MySQL 更为便捷,但源码编译安装提供了无与伦比的优势:

  • 极致性能优化:您可以根据硬件架构和特定工作负载进行编译优化,例如调整编译参数,开启或禁用特定功能,从而压榨出 MySQL 的最佳性能。

  • 高度定制化:您可以选择性地编译所需的存储引擎、功能模块,去除不必要的功能,减小安装包体积,降低潜在的安全风险。

  • 最新版本与补丁:源码编译允许您第一时间体验到 MySQL 的最新版本或应用最新的安全补丁,无需等待发行版官方的更新。

  • 透明化与控制:整个安装过程完全可控,您可以清楚地了解每个组件的安装路径、依赖关系,便于后续的维护和故障排除。

Rocky Linux 9 源码包安装 Mysql8

快速安装

# 使用:
# gitee:
# wget https://gitee.com/funet8/Rocky-Linux-Shell/raw/main/shell/Rocky_Linux_9_Install_MySQL8.sh
# sh Rocky_Linux_9_Install_MySQL8.sh
# github:
# wget https://raw.githubusercontent.com/funet8/Rocky-Linux-Shell/refs/heads/main/shell/Rocky_Linux_9_Install_MySQL8.sh
# sh Rocky_Linux_9_Install_MySQL8.sh

功能介绍

功能:Rocky Linux 9 系统中源码包安装 mysql8

  • mysql 安装的目录:/data/app/mysql8/install

  • mysql 数据库目录:/data/app/mysql8/data

  • mysql 数据库配置目录:/data/app/mysql8/etc

  • mysql 数据库 binlog 目录:/data/app/mysql8/binlog

  • mysql 端口为:61800

  • mysql root 密码为:CQ12345678

安装依赖

dnf 安装依耐

安装 MySQL8.0.39 需要的 gcc 工具集,安装前,需要升级软件包 libsemanage 为高版本,同样需要下载软件包到本地,然后 rpm -Uvh 更新

dnf install -y make cmake gcc gcc-c++ ncurses-devel  openssl-devel libtirpc wget
    mkdir /data/software/
    cd /data/software/
    wget https://dl.rockylinux.org/pub/rocky/9/devel/x86_64/os/Packages/l/libtirpc-devel-1.3.3-9.el9.x86_64.rpm
    wget https://dl.rockylinux.org/pub/rocky/9/AppStream/x86_64/os/Packages/r/rpcgen-1.4-9.el9.x86_64.rpm
    # 安装依赖包
    rpm -ivh libtirpc-devel-1.3.3-9.el9.x86_64.rpm
    rpm -ivh rpcgen-1.4-9.el9.x86_64.rpm
    
    然后再安装 MySQL8.0.39 需要的 gcc 工具集,安装前,需要升级软件包 libsemanage 为高版本,同样需要下载软件包到本地,然后 rpm -Uvh 更新

    wget http://js.funet8.com/rocky-linux/mysql/libsemanage-3.6-5.el9_6.x86_64.rpm
    rpm -Uvh libsemanage-3.6-5.el9_6.x86_64.rpm

yum install -y gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-binutils gcc-toolset-12-annobin-annocheck gcc-toolset-12-annobin-plugin-gcc

新建目录

    mkdir -p  /data/app/mysql8 /data/app/mysql8/install /data/app/mysql8/data /data/app/mysql8/etc /data/app/mysql8/binlog

下载 Mysql 并安装

下载 mysql

    cd /data/software/
    wget http://js.funet8.com/rocky-linux/mysql/mysql-boost-8.0.39.tar.gz
    tar -zxvf mysql-boost-8.0.39.tar.gz
    cd mysql-8.0.39

安装

cmake \
-DCMAKE_INSTALL_PREFIX=/data/app/mysql8/install \
-DINSTALL_DATADIR=/data/app/mysql8/data \
-DMYSQL_USER=mysql \
-DMYSQL_UNIX_ADDR=/data/app/mysql8/etc/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DFORCE_INSOURCE_BUILD=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DEXTRA_CHARSETS=all \
-DWITH_BOOST=boost/boost_1_77_0/
# 编译(j1 避免内存被杀)
make -j1 && make install

配置 mysql 文件

vi /data/app/mysql8/etc/my.cnf
填写以下内容:
    [client]
    default-character-set = utf8mb4
    [mysqld]
    ### 基本属性配置
    port = 61800
    datadir=/data/app/mysql8/data
    socket=/data/app/mysql8/etc/mysql.sock
    # 禁用主机名解析
    skip-name-resolve
    # 默认的数据库引擎
    default-storage-engine = InnoDB
    ### 字符集配置
    #character-set-client-handshake = FALSE(弃用)
    character-set-server = utf8mb4
    collation-server = utf8mb4_unicode_ci
    init_connect='SET NAMES utf8mb4'
    ### GTID
    # server_id 来唯一的标识某个数据库实例,并在链式或双主复制结构中用它来避免 sql 语句的无限循环
    server_id = 1

    # 开启 gtid 功能
    gtid_mode = on
    # 保障 GTID 事务安全
    # 当启用 enforce_gtid_consistency 功能的时候,
    # MySQL 只允许能够保障事务安全, 并且能够被日志记录的 SQL 语句被执行,
    # 像 create table ... select 和 create temporarytable 语句,
    # 以及同时更新事务表和非事务表的 SQL 语句或事务都不允许执行
    enforce-gtid-consistency = true
    # 以下两条配置为主从切换, 数据库高可用的必须配置
    # 开启 binlog 日志功能
    log_bin = on
    binlog_format=ROW
    log-bin=/data/app/mysql8/binlog/mysql-bin
    #10 天
    binlog_expire_logs_seconds = 864000
    #expire_logs_days=10(弃用)

    max_binlog_size=500m
    binlog_cache_size=4m
    max_binlog_cache_size=512m
    # 开启从库更新 binlog 日志
    #log-slave-updates = on
    ### 慢查询日志
    # 打开慢查询日志功能
    slow_query_log = 1
    # 超过 2 秒的查询记录下来
    long_query_time = 2
    # 记录下没有使用索引的查询
    #log_queries_not_using_indexes = 1
    slow_query_log_file = /data/app/mysql8/etc/slow-61800.log
    ### 自动修复
    # 记录 relay.info 到数据表中
    relay_log_info_repository = TABLE
    # 记录 master.info 到数据表中
    master_info_repository = TABLE
    # 启用 relaylog 的自动修复功能
    relay_log_recovery = on
    # 在 SQL 线程执行完一个 relaylog 后自动删除
    relay_log_purge = 1
    ### 数据安全性配置
    # 关闭 master 创建 function 的功能
    log_bin_trust_function_creators = off
    # 每执行一个事务都强制写入磁盘
    sync_binlog = 1
    # timestamp 列如果没有显式定义为 not null, 则支持 null 属性
    # 设置 timestamp 的列值为 null, 不会被设置为 current timestamp
    explicit_defaults_for_timestamp=true
    ### 优化配置
    # 优化中文全文模糊索引
    ft_min_word_len = 1
    # 默认库名表名保存为小写, 不区分大小写
    lower_case_table_names = 1
    # 单条记录写入最大的大小限制
    # 过小可能会导致写入 (导入) 数据失败
    max_allowed_packet = 256M
    # 半同步复制开启
    #rpl_semi_sync_master_enabled = 1
    #rpl_semi_sync_slave_enabled = 1
    # 半同步复制超时时间设置
    #rpl_semi_sync_master_timeout = 1000
    # 复制模式(保持系统默认)
    #rpl_semi_sync_master_wait_point = AFTER_SYNC
    # 后端只要有一台收到日志并写入 relaylog 就算成功
    #rpl_semi_sync_master_wait_slave_count = 1
    # 多线程复制
    #slave_parallel_type = logical_clock
    #slave_parallel_workers = 4
    ### 连接数限制
    max_connections = 3000
    # 验证密码超过 20 次拒绝连接
    max_connect_errors = 20
    # back_log 值指出在 mysql 暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中
    # 也就是说,如果 MySql 的连接数达到 max_connections 时,新来的请求将会被存在堆栈中
    # 以等待某一连接释放资源,该堆栈的数量即 back_log,如果等待连接的数量超过 back_log
    # 将不被授予连接资源
    back_log = 500
    open_files_limit = 65535
    # 服务器关闭交互式连接前等待活动的秒数
    interactive_timeout = 3600
    # 服务器关闭非交互连接之前等待活动的秒数
    wait_timeout = 3600
    ### 内存分配
    # 指定表高速缓存的大小。每当 MySQL 访问一个表时,如果在表缓冲区中还有空间
    # 该表就被打开并放入其中,这样可以更快地访问表内容
    table_open_cache = 1024
    # 为每个 session 分配的内存, 在事务过程中用来存储二进制日志的缓存
    binlog_cache_size = 2M
    # 在内存的临时表最大大小
    tmp_table_size = 128M
    # 创建内存表的最大大小(保持系统默认, 不允许创建过大的内存表)
    # 如果有需求当做缓存来用, 可以适当调大此值
    max_heap_table_size = 16M
    # 顺序读, 读入缓冲区大小设置
    # 全表扫描次数多的话, 可以调大此值
    read_buffer_size = 1M
    # 随机读, 读入缓冲区大小设置
    read_rnd_buffer_size = 8M
    # 高并发的情况下, 需要减小此值到 64K-128K
    sort_buffer_size = 1M
    # 每个查询最大的缓存大小是 1M, 最大缓存 64M 数据
    #query_cache_size = 64M
    #query_cache_limit = 1M
    # 提到 join 的效率
    join_buffer_size = 16M
    # 线程连接重复利用
    thread_cache_size = 64
    ### InnoDB 优化
    ## 内存利用方面的设置
    # 数据缓冲区
    innodb_buffer_pool_size=2G
    ## 日志方面设置
    # 事务日志大小
    #innodb_log_file_size = 256M
    # 日志缓冲区大小
    innodb_log_buffer_size = 4M
    # 事务在内存中的缓冲
    #innodb_log_buffer_size = 3M
    # 主库保持系统默认, 事务立即写入磁盘, 不会丢失任何一个事务
    innodb_flush_log_at_trx_commit = 1
    # mysql 的数据文件设置, 初始 100, 以 10M 自动扩展
    innodb_data_file_path = ibdata1:10M:autoextend
    # 为提高性能, MySQL 可以以循环方式将日志文件写到多个文件
    #innodb_log_files_in_group = 3
    ## 其他设置
    # 如果库里的表特别多的情况,请增加此值
    innodb_open_files = 800
    # 为每个 InnoDB 表分配单独的表空间
    innodb_file_per_table = 1
    # InnoDB 使用后台线程处理数据页上写 I/O(输入)请求的数量
    innodb_write_io_threads = 8
    # InnoDB 使用后台线程处理数据页上读 I/O(输出)请求的数量
    innodb_read_io_threads = 8
    # 启用单独的线程来回收无用的数据
    innodb_purge_threads = 1
    # 脏数据刷入磁盘(先保持系统默认, swap 过多使用时, 调小此值, 调小后, 与磁盘交互增多, 性能降低)
    # innodb_max_dirty_pages_pct = 90
    # 事务等待获取资源等待的最长时间
    innodb_lock_wait_timeout = 120
    # 开启 InnoDB 严格检查模式, 不警告, 直接报错
    innodb_strict_mode=1
    # 允许列索引最大达到 3072
    #innodb_large_prefix = on
    [mysqldump]
    # 开启快速导出
    quick
    default-character-set = utf8mb4
    max_allowed_packet = 256M
    [mysql]
    # 开启 tab 补全
    auto-rehash
    default-character-set = utf8mb4

mysql 初始化

chown mysql.mysql -R /data/app/mysql8

初始化数据库

/data/app/mysql8/install/bin/mysqld --defaults-file=/data/app/mysql8/etc/my.cnf  --initialize --user=mysql > /data/app/mysql8/etc/mysql_install.log 2>&1

查看初始密码

mysql_passwd_init=`cat /data/app/mysql8/etc/mysql_install.log | grep  password |awk'{print $NF}'`
cat $mysql_passwd_init

启动 mysql

/data/app/mysql8/install/bin/mysqld_safe   --defaults-file=/data/app/mysql8/etc/my.cnf --user=mysql &

修改初始密码

/data/app/mysql8/install/bin/mysqladmin -u root -hlocalhost -P"61800"-p"${mysql_passwd_init}"password"CQ12345678"

关闭 mysql

/data/app/mysql8/install/bin/mysqladmin -uroot -p"CQ12345678" -S /data/app/mysql8/etc/mysql.sock shutdown

设置文件权限

chown -R mysql:mysql  -R /data/app/mysql8

开机自启动 mysql 服务

echo" 添加 Mysql8 开机自启动脚本 " >> /etc/rc.local
	echo "nohup /data/app/mysql8/install/bin/mysqld_safe --defaults-file=/data/app/mysql8/etc/my.cnf --user=mysql > /dev/null 2>&1 &">> /etc/rc.local
	#启用 rc-local
	systemctl enable rc-local
	systemctl start rc-local
    chmod +x /etc/rc.d/rc.local

开启防火墙

firewall-cmd --zone=public --add-port=61800/tcp --permanent
    firewall-cmd --reload
    # 查看所有端口
    firewall-cmd --zone=public --list-ports

创建管理员账号

创建一个名字 star 账号,密码为 PASs5566a,管理员权限的账号

进入 mysql
/data/app/mysql8/install/bin/mysql -u root -h localhost -P61800 -pCQ12345678

#-- 1. 创建用户(支持本地和远程登录)# CREATE USER 'star'@'%' IDENTIFIED BY 'PASs5566a';
#-- 2. 授予所有权限(包括所有数据库 + 所有操作)# GRANT ALL PRIVILEGES ON *.* TO 'star'@'%' WITH GRANT OPTION;
#-- 3. 立即刷新权限
# FLUSH PRIVILEGES;

最后

以上就是 Rocky Linux 9 系统上从源码编译安装了 MySQL 8。这种方式不仅为您提供了高度定制化的数据库环境,更让您对整个系统的运行机制有了更深入的理解和掌控。在生产环境中,源码编译的 MySQL 将为您的应用提供更稳定、更高效的后端支持。

写文不易,如果你都看到了这里,请点个赞和在看,分享给更多的朋友;也别忘了关注星哥玩云!这里有满满的干货分享,还有轻松有趣的技术交流~点个赞、分享给身边的小伙伴,一起成长,一起玩转技术世界吧!😊

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2025-07-05发表,共计7736字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
8011616
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...