【原创】RockyLinux9.3手动编译MySQL8.2.0源码,超详细!!

2024-03-26 13:12

本文主要是介绍【原创】RockyLinux9.3手动编译MySQL8.2.0源码,超详细!!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

MySQL安装如果使用rpm包安装实在过于麻烦,缺这缺那的,我就想能不能就源码包自己手动编译安装,编译完的包可以给其他服务器直接用,这样只需要麻烦一次,后面就方便了。至于为什么不用RockyLinux8.6版本,因为我试过了,编译成功的MySQL执行报错了,我也不知道什么原因导致的,索性换到最新的RockyLinux9.3版本了。

我这里用的电脑都是X86_64平台的,如果是其他CPU架构的机型则需要下载对应CPU架构版本的rpm包。

这篇文章是我在一台虚拟机上编译完成后,总结经验之后,第三次编译了,一边操作一边写的这篇博客,保证真实有效,跟着我操作,绝对能够编译成功!

提前准备

这准备的东西就多了,首先是RockyLinux9.3版本,这个直接去官网下载,最小化安装即可。然后是装一大堆依赖包。

安装完后在/opt下有个rh目录,这个rh可千万不能手贱删了!!删了后cmake会报错!!(别问我是怎么知道的,因为我手贱把它删了,导致只能全部重来)

yum install -y cmake gcc-c++ gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-binutils gcc-toolset-12-annobin-annocheck gcc-toolset-12-annobin-plugin-gcc openssl-devel ncurses-devel rpcgen bzip2

下载MySQL的源码包

MySQL :: Download MySQL Community Server (Archived Versions)

选择版本8.2.0,截止目前发稿(2024.3.26)的最新版本

选择Source Code,选择All Operating System

下载到MySQL的源码包

下载boost包

https://boostorg.jfrog.io/artifactory/main/release/1.77.0/source/boost_1_77_0.tar.bz2

下载libtirpc-devel

RPM resource libtirpc-devel

ctrl+F网页搜索:libtirpc-devel-1.3.3-2.el9.x86_64.rpm

并下载这个包

下载libtirpc

RPM resource libtirpc

ctrl+F网页搜索:libtirpc-devel-1.3.3-2.el9.x86_64.rpm

并下载这个包

上传文件

刚才下载的所有的包,到/opt目录下,并cd /opt

安装boost包

bzip2 -d boost_1_77_0.tar.bz2

注意这一过程时间比较长,且没有日志打印

再次解压

tar xvf boost_1_77_0.tar

执行安装

cd boost_1_77_0
./bootstrap.sh
./b2
./b2 headers

安装另外两个rpm包

cd /opt
rpm -ivh libtirpc-devel-1.3.3-2.el9.x86_64.rpm
rpm -ivh libtirpc-1.3.3-2.el9.x86_64.rpm

编译安装MySQL

解压MySQL源码包

tar zxvf mysql-8.2.0.tar.gz
cd mysql-8.2.0

创建build目录,并cmake

mkdir build
cd build
cmake .. -DWITH_BOOST=/opt/boost_1_77_0

当出现-- Build files have been written to: /opt/mysql-8.2.0/build,说明cmake完成了

进行make操作

这个根据自己的电脑性能量力而行,选择合适的job数量,由于我的电脑配置比较高,我选择了32个job。这个对电脑CPU和内存的要求都很高。我电脑是i7 12700H(14c20T)+64GB内存,所以我才敢直接-j 32

make -j 32

电脑性能越强悍,这一步时间越短

经过漫长的编译等待时间,终于编译好了

进行make install

make install

打包MySQL

在执行完make install后在/usr/local目录下就生成了MySQL编译完的包了,执行

cd /usr/local
tar czvf mysql-bin.8.2.0.tar.gz mysql/

将这个tar包下载下来就能直接给其他服务器使用了

创建MySQL用户

目前8.2.0版本的MySQL无法使用root用户进行启动,因此需要创建一个MySQL用户

useradd mysql

赋予mysql用户mysql目录的权限

cd /usr/local
chown -R mysql:mysql mysql

运行MySQL

su mysql
cd /usr/local/mysql
bin/mysqld --initialize --user=mysql
bin/mysql_ssl_rsa_setup
bin/mysqld_safe --user=mysql &ps aux|grep mysql

进入MySQL

./bin/mysql -uroot -p

该密码可以在mysqld initialize这一步里找到,输入该密码即可进入MySQL

到了这一步可以说是大功告成!!MySQL成功编译,并能够进入了

修改root用户密码,并开启远程登录

alter user user() identified by '你的密码';
use mysql;
update user set host = '%'  where user = 'root';
flush privileges;

DBeaver连接MySQL

由于版权问题,公司不允许使用Navicat,目前这里使用DBeaver进行连接

直接连接的话会报这个错

在驱动属性中,将allowPublicKeyRetrieval改为true即可

这样就能连接成功了,这就是我们亲手编译完成的MySQL8.2.0

MySQL设置自启

返回使用root用户

chmod 755 /etc/rc.d/rc.local
vi /etc/rc.d/rc.local

在结尾添加一行内容:

/usr/local/mysql/support-files/mysql.server start

保存后重启服务器看效果

结语

该手动编译的MySQL没有my.cnf,需要自己手动创建,就在/usr/local/mysql目录下,大家看看/usr/local/mysql/support-files/mysql.server的源码就知道了。

如果需要讨论交流的,可以进群讨论:170618278(群很水,请见谅)。

如果本博客存在什么问题,请合理评论讨论交流,谢谢!!

这篇关于【原创】RockyLinux9.3手动编译MySQL8.2.0源码,超详细!!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/848625

相关文章

ubuntu20.0.4系统中安装Anaconda的超详细图文教程

《ubuntu20.0.4系统中安装Anaconda的超详细图文教程》:本文主要介绍了在Ubuntu系统中如何下载和安装Anaconda,提供了两种方法,详细内容请阅读本文,希望能对你有所帮助... 本文介绍了在Ubuntu系统中如何下载和安装Anaconda。提供了两种方法,包括通过网页手动下载和使用wg

SpringBoot实现二维码生成的详细步骤与完整代码

《SpringBoot实现二维码生成的详细步骤与完整代码》如今,二维码的应用场景非常广泛,从支付到信息分享,二维码都扮演着重要角色,SpringBoot是一个非常流行的Java基于Spring框架的微... 目录一、环境搭建二、创建 Spring Boot 项目三、引入二维码生成依赖四、编写二维码生成代码五

Java中 instanceof 的用法详细介绍

《Java中instanceof的用法详细介绍》在Java中,instanceof是一个二元运算符(类型比较操作符),用于检查一个对象是否是某个特定类、接口的实例,或者是否是其子类的实例,这篇文章... 目录引言基本语法基本作用1. 检查对象是否是指定类的实例2. 检查对象是否是子类的实例3. 检查对象是否

将图片导入Python的turtle库的详细过程

《将图片导入Python的turtle库的详细过程》在Python编程的世界里,turtle库以其简单易用、图形化交互的特点,深受初学者喜爱,随着项目的复杂度增加,仅仅依靠线条和颜色来绘制图形可能已经... 目录开篇引言正文剖析1. 理解基础:Turtle库的工作原理2. 图片格式与支持3. 实现步骤详解第

Docker安装MySQL镜像的详细步骤(适合新手小白)

《Docker安装MySQL镜像的详细步骤(适合新手小白)》本文详细介绍了如何在Ubuntu环境下使用Docker安装MySQL5.7版本,包括从官网拉取镜像、配置MySQL容器、设置权限及内网部署,... 目录前言安装1.访问docker镜像仓库官网2.找到对应的版本,复制右侧的命令即可3.查看镜像4.启

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

Java版本不兼容问题详细解决方案步骤

《Java版本不兼容问题详细解决方案步骤》:本文主要介绍Java版本不兼容问题解决的相关资料,详细分析了问题原因,并提供了解决方案,包括统一JDK版本、修改项目配置和清理旧版本残留等步骤,需要的朋... 目录错误原因分析解决方案步骤第一步:统一 JDK 版本第二步:修改项目配置第三步:清理旧版本残留兼容性对

exfat和ntfs哪个好? U盘格式化选择NTFS与exFAT的详细区别对比

《exfat和ntfs哪个好?U盘格式化选择NTFS与exFAT的详细区别对比》exFAT和NTFS是两种常见的文件系统,它们各自具有独特的优势和适用场景,以下是关于exFAT和NTFS的详细对比... 无论你是刚入手了内置 SSD 还是便携式移动硬盘或 U 盘,都需要先将它格式化成电脑或设备能够识别的「文

史上最全nginx详细参数配置

《史上最全nginx详细参数配置》Nginx是一个轻量级高性能的HTTP和反向代理服务器,同时也是一个通用代理服务器(TCP/UDP/IMAP/POP3/SMTP),最初由俄罗斯人IgorSyso... 目录基本命令默认配置搭建站点根据文件类型设置过期时间禁止文件缓存防盗链静态文件压缩指定定错误页面跨域问题

nginx负载均衡及详细配置方法

《nginx负载均衡及详细配置方法》Nginx作为一种高效的Web服务器和反向代理服务器,广泛应用于网站的负载均衡中,:本文主要介绍nginx负载均衡及详细配置,需要的朋友可以参考下... 目录一、 nginx负载均衡策略1.1 基本负载均衡策略1.2 第三方策略1.3 策略对比二、 nginx配置2.1