【德哥说库系列】-RHEL8环境源码编译安装MySQL8.0
📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前服务于工业互联网
擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️
文章目录
- 前言
- 📣 1.源码安装包下载
- 📣 2.环境准备
- ✨ 2.1 操作系统
- ✨2.2.关闭防火墙
- ✨2.3.selinux关闭
- ✨2.4.Host解析配置
- ✨2.5.卸载mariadb
- 📣 3.配置yum安装依赖
- 📣 4.源码安装
- ✨4.1 安装报错处理
- 📣 5.安装MySQL
- ✨5.1 用户及组
- ✨5.2 参数文件
- ✨5.2 MySQL初始化
- ✨5.4 环境变量设置
- 📣 6.启动关闭
- 📣 7.开机启动配置
- ✨7.1 服务配置
- ✨7.2 加载设置
前言
Linux源码安装MySQL在实际安装的操作系统进行可根据需要定制编译,最灵活,性能最好.📣 1.源码安装包下载
官网下载地址:https://dev.mysql.com/downloads/mysql/
源码包下载选择Source Code,无需选择操作系统平台
📣 2.环境准备
安装任何数据库之前,操作系统环境准备至关重要,本次实操是基于RHEL8操作系统。源码安装对环境要求比较高,涉及部分系统内核的升级。
✨ 2.1 操作系统
[root@jeames ~]# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.1 (Ootpa)
✨2.2.关闭防火墙
查看防火墙是状态
[root@jeames ~]# systemctl status firewalld
关闭防火墙
[root@jeames ~]# systemctl stop firewalld
取消开机自启动
[root@jeames ~]# systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
✨2.3.selinux关闭
修改参数文件/etc/sysconfig/selinux中SELINUX的值为disabled
[root@jeames ~]# sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config
修改完成后需要重启服务器才生效
✨2.4.Host解析配置
[root@jeames ~]# hostname
jeames
[root@jeames ~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
#此处新增hostname与ip的对应
192.168.6.10 jeames
✨2.5.卸载mariadb
为了保证后续操作不会产生其他冲突,我们卸载部分操作系统自带原有的mariadb
[root@jeames ~]# rpm -qa|grep mariadb
[root@jeames ~]# rpm -qa|grep mariadb-libs|xargs rpm -e --nodeps
📣 3.配置yum安装依赖
1.创建挂载路径
[root@jeames ~]# mkdir -p /mnt/cdrom2.挂载系统镜像光盘到指定目录
#因为光盘的格式通常是iso9660,意思是/dev/sr0挂载在/mnt/cdrom目录上
[root@jeames ~]# mount -t iso9660 /dev/sr0 /mnt/cdrom
mount: /mnt/cdrom: WARNING: device write-protected, mounted read-only.3.修改yum源配置文件
编辑rhel8-local.repo文件
[root@jeames ~]# cd /etc/yum.repos.d
[root@jeames yum.repos.d]# vi rhel8-local.repo
[localREPO]
name=localhost8
baseurl=file:///mnt/cdrom/BaseOS
enable=1
gpgcheck=0[localREPO_APP]
name=localhost8_app
baseurl=file:///mnt/cdrom/AppStream
enable=1
gpgcheck=04.配置好后重建本地缓存
yum clean all
yum makecache
yum repolist
5.安装MySQL 8.0源码所需的依赖包
[root@jeames ~]# yum -y install lrzsz wget perl-Digest-MD5
[root@jeames ~]# yum -y install libaio#编译软件依赖
[root@jeames ~]# yum -y install cmake gcc gcc-c++
[root@jeames ~]# yum -y install git make
[root@jeames ~]# yum install libtirpc-devel
[root@jeames ~]# yum insatll rpcgen
[root@jeames ~]# yum install libudev-devel
[root@jeames ~]# yum install ncurses-devel#字符终端处理依赖
[root@jeames ~]# yum install openssl openssl-devel ncurses
注解:rpcgen需要手动下载安装包编译安装以下就是具体解决Mysql源码编译报错Could not find rpcgen的方法。
rpcgen下载参考 https://github.com/thkukuk/rpcsvc-proto/releasesxz -d rpcsvc-proto-1.4.4.tar.xz
tar -xvf rpcsvc-proto-1.4.4.tar
cd rpcsvc-proto-1.4.4
./configure
make
make install
📣 4.源码安装
1.解压软件包
#创建软件目录
[root@jeames ~]# mkdir -p /soft2.上传软件包
#通过Xftp工具或者SecureCRT自带的Sftp上传软件包
mysql-boost-8.0.27.tar.gz3.校验安装包
[root@jeames ~]# cd /soft
[root@jeames soft]# md5sum mysql-boost-8.0.27.tar.gz
80310c5a1b24145fa072927ab99a4c0d mysql-boost-8.0.27.tar.gz
注:md5sum是linux下的shell命令,其功能是计算检验MD5效验码,
是为了MySQL安装包是否损坏4.解压缩安装包
[root@jeames soft]# tar -zxf mysql-boost-8.0.27.tar.gz5.编译安装
#初始化
[root@jeames soft]# cd mysql-8.0.27
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLE_DTRACE=0 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_EMBEDDED_SERVER=1 \
-DDOWNLOAD_BOOST=1 \
-DFORCE_INSOURCE_BUILD=1 \
-DWITHOUT_PARTITION_STORAGE_ENGINE=0 \
-DCMAKE_C_COMPILER=/usr/bin/gcc \
-DCMAKE_CXX_COMPILER=/usr/bin/g++ \
-DWITH_BOOST=/soft/mysql-8.0.27/boost#编译
[root@jeames mysql-8.0.27]# make -j4#安装
[root@jeames mysql-8.0.27]# make install
✨4.1 安装报错处理
查阅相关信息后,认为是虚拟机内存不足造成的。
通过创建swap分区解决了这个问题,编译成功。加到内存到8G ,SWAP交换区增加了4G即可
可以通过以下方法增大swap交换分区
dd if=/dev/zero of=/swapfile bs=1024 count=4194304
mkswap /swapfile
swapon /swapfile
swapon -s
vim /etc/fstab
/swapfile swap swap defaults 0 0
mount -a
📣 5.安装MySQL
✨5.1 用户及组
groupadd mysql
useradd -g mysql mysql
chown -R mysql:mysql /usr/local/mysql
✨5.2 参数文件
cat > /etc/my.cnf <<“EOF”
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
server_id=80273306
log-bin
skip-name-resolve
character_set_server=utf8mb4
#default-time-zone = ‘+8:00’
log_timestamps = SYSTEM
EOF
✨5.2 MySQL初始化
/usr/local/mysql/bin/mysqld --initialize-insecure
–basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
✨5.4 环境变量设置
echo “export PATH=$PATH:/usr/local/mysql/bin” >> /root/.bashrc
source /root/.bashrc
📣 6.启动关闭
启动MySQL:
mysqld_safe &
登录MySQL,默认密码为空 :
mysql -uroot -p
关闭MySQL
mysqladmin -uroot -p shutdown
📣 7.开机启动配置
✨7.1 服务配置
vi /usr/lib/systemd/system/mysqld.service##加入以下内容即可
[Unit]
Description=Mysql server
After=network.target[Install]
WantedBy=multi-user.target[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --daemonize $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID KillMode=process
LimitNOFILE=65535
Restart=on-failure
RestartSec=10
RestartPreventExitStatus=1
PrivateTmp=false
✨7.2 加载设置
systemctl daemon-reload
systemctl stop mysqld
systemctl enable mysqld
systemctl status mysqld
systemctl start mysqld
systemctl enable mysqld
相关文章:

【德哥说库系列】-RHEL8环境源码编译安装MySQL8.0
📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…...

Sandboxie+Buster Sandbox Analyzer打造个人沙箱
一、运行环境和需要安装的软件 实验环境:win7_x32或win7_x64 用到的软件:WinPcap_4_1_3.exe、Sandboxie-3-70.exe、Buster Sandbox Analyzer 重点是Sandboxie必须是3.70版本。下载地址:https://github.com/sandboxie-plus/sandboxie-old/blo…...
源码解析flink的GenericWriteAheadSink为什么做不到精确一次输出
背景 GenericWriteAheadSink是可以用于几乎是精准一次输出的场景,为什么说是几乎精准一次呢?我们从源码的角度分析一下 GenericWriteAheadSink做不到精准一次输出的原因 首先我们看一下flink检查点完成后通知GenericWriteAheadSink开始进行分段的记录…...
C#经典十大排序算法(完结)
C#冒泡排序算法 简介 冒泡排序算法是一种基础的排序算法,它的实现原理比较简单。核心思想是通过相邻元素的比较和交换来将最大(或最小)的元素逐步"冒泡"到数列的末尾。 详细文章描述 https://mp.weixin.qq.com/s/z_LPZ6QUFNJcw…...

C/C++文件操作(细节满满,part2)
该文章上一篇:C/C文件操作(细节满满,part1)_仍有未知等待探索的博客-CSDN博客 个人主页:仍有未知等待探索_C语言疑难,数据结构,小项目-CSDN博客 专题分栏:C语言疑难_仍有未知等待探索的博客-CSDN博客 目录 …...

web前端面试-- 手写原生Javascript方法(new、Object.create)
web面试题 本人是一个web前端开发工程师,主要是vue框架,整理了一些面试题,今后也会一直更新,有好题目的同学欢迎评论区分享 ;-) web面试题专栏:点击此处 手动实现Object.create 通过Object.create&#…...

C++前缀和算法的应用:得到连续 K 个 1 的最少相邻交换次数 原理源码测试用例
本文涉及的基础知识点 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 滑动窗口 题目 给你一个整数数组 nums 和一个整数 k 。 nums 仅包含 0 和 1 。每一次移动,你可以选择 相邻 两个数字并将它们交换。 请你返回使 nums 中包…...
目标检测YOLO实战应用案例100讲-基于YOLOv5的航拍图像旋转目标检测
目录 前言 国内外研究历史与现状 目标检测技术的研究历史与现状...

H5前端开发——BOM
H5前端开发——BOM BOM(Browser Object Model)是指浏览器对象模型,它提供了一组对象和方法,用于与浏览器窗口进行交互。 通过 BOM 对象,开发人员可以操作浏览器窗口的行为和状态,实现与用户的交互和数据传…...

stable diffusion如何解决gradio外链无法开启的问题
问题确认 为了确认gradio开启不了是gradio库的问题还是stable diffusion的问题,可以先执行这样一段demo代码 import gradio as grdef greet(name):return "Hello " name "!"demo gr.Interface(fngreet, inputs"text", outputs&q…...
SpringMvc-面试用
一、SpringMvc常用注解 1、修饰在类的 RestController RequestMapping("/test")RestController是什么?其实是一个复合注解 Controller //其实就是Component ResponseBody //独立的注解 public interface RestController {}RequestMapping 也可以认…...
并发编程 # 3
文章目录 一、进程和线程的比较二、GIL全局解释器锁1.引入2.Python解释器的种类结论:在CPython解释其中,同一个进程下开启的多线程,同一时刻只能有一个线程执行,无法利用多核优势。得出结论:GIL锁就是保证在同一时刻只…...

ESP32C3 LuatOS TM1650①驱动测试
合宙TM1650驱动资料 TM1650.lua源码 引脚连接 TM1650ESP32C3SCLGPIO5SDAGPIO4 下载TM1650.lua源码,并以文件形式保存在项目文件夹中 驱动测试源码 --注意:因使用了sys.wait()所有api需要在协程中使用 -- 用法实例 PROJECT "ESP32C3_TM1650" VERSION …...

TCP为什么需要三次握手和四次挥手?
一、三次握手 三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包 主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备 过程如下ÿ…...

【C++】一些C++11特性
C特性 1. 列表初始化1.1 {}初始化1.2 initializer_list 2. 声明2.1 auto2.2 typeid2.3 decltype2.4 nullptr 3. STL3.1 新容器3.2 新接口 4. 右值引用5. 移动构造与移动赋值6. lambda表达式7. 可变参数模板8. 包装器9. bind 1. 列表初始化 1.1 {}初始化 C11支持所有内置类型和…...
leetcode 647. 回文子串、516. 最长回文子序列
647. 回文子串 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成&#…...
Vue Router 刷新当前页面
Vue项目, 在实际工作中, 有些时候需要在 加载完某些数据之后对当前页面进行刷新, 以期 onMounted 等生命周期函数, 或者 数据重新加载. 总之是期望页面可以重新加载一次. 目前总结有三种途径可实现以上需求: 一, reload 直接刷新页面 window.location.reload(); $router.go(…...
lstm 回归实战、 分类demo
预备知识 lstm 参数 输入、输出格式 nn.LSTM(input_dim,hidden_dim,num_layers); imput_dim 特征数 input:(样本数、seq, features_num) h0,c0 (num_layers,seq, hidden_num) output: (样本数、seq, hidden_dim) 再加一个全连接层,将 outpu…...

实践DDD模拟电商系统总结
目录 一、事件风暴 二、系统用例 三、领域上下文 四、架构设计 (一)六边形架构 (二)系统分层 五、系统实现 (一)项目结构 (二)提交订单功能实现 (三࿰…...

`SQL`编写判断是否为工作日函数编写
SQL编写判断是否为工作日函数编写 最近的自己在写一些功能,遇到了对于工作日的判断,我就看了看sql,来吧!~(最近就是好疲惫) 我们一起看看(针对ORACLE) 1.声明: CREATE OR REPLACE PACKAGE GZYW_2109_1214.PKG_FUN_GETDAY_HDAY AS /** * 通过节假日代码获取指定的日期[查找基…...

Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...

Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...