源码编译安装MySQL

news2025/2/23 2:41:50

MySQL相应版本的tar包下载

在5.7的版本的MySQL编译安装的时候,需要依赖C语言的库文件【boost】,

如上图所示,如果你使用第一个MySQL的tar包,还需要去网上去下载boost即C语言的库文件,但是第二个tar包就既包含MySQL的源码包也包含这个C语言的boost库文件。

规划:

数据目录   /mysql/data  逻辑卷

二进制日志  /mysql/log  

至少准备三块盘,一块盘是启动分区和根分区来使用,

一块盘是数据目录来使用,

一块盘是二进制日志来使用

阿帕奇是一个用C语言编写的软件所以在编译安装阿帕奇的时候,需要使用gcc来源码编译这个阿帕奇软件才可以。

但是同样是用C语言编写的MySQL软件,就需要在编译安装的使用使用cmake来编译安装这个软件。但是cmake软件是用C语言编写的,所以cmake工作的时候还需要使用gcc软件来进行编译的操作。

1.规划数据目录,二进制日志目录:

规划数据目录

如上图所示,这是在规划使用名叫/mysql/data的逻辑卷来作为源码编译MySQL软件时的数据目录。

如上图所示,这是在创建/mysql/data/和/mysql/log/这两个数据目录。然后我们需要将之前创建的/dev/mysql/data这个逻辑卷挂载到/mysql/data/,

随后去编辑/etc/fstab文件,然后使用mount -a去检测/etc/fstab文件是否出错。

如上图所示,这是逻辑卷/dev/mysql/data/挂载到/mysql/data,并且这个逻辑卷的文件格式是ext4

规划二进制日志目录

如上图所示,这是格式化整块磁盘,给这个磁盘设置ext4的文件系统。

如上图所示,这是编辑/etc/fstab文件,将格式化之后的/dev/sdc挂载到/mysql/log/

随后使用mount -a去检测/etc/fstab文件中的内容是否出错。

如上图所示,规划的数据目录和日志目录就准备好了。

ext4文件系统的块设备首次挂载时候的注意事项。

如上图所示,当文件系统为ext4的块设备首次挂载到机器目录上时,会在这个机器目录下自动生成一个lost+found的目录,这个目录必须删除,因为MySQL要求它的数据目录和日志目录下必须是个空目录,不然会影响MySQL的正常启动。

2.如果当前的环境中有mariadb的软件,就把它卸载掉。

如上图所示,这就是在Linux操作系统中查看是否有mariadb的相关软件,如果有,就使用rpm -e --nodeps将这个软件卸载掉。

3.创建mysql的用户,将MySQL的数据目录和日志目录的属主和属组修改mysql。

[root@mysql-server ~]# source /etc/profile
[root@mysql-server ~]#

如上图所示,是重新加载并应用 /etc/profile 文件中定义的环境变量和函数,使得这些配置立即生效于当前shell会话。这个文件包含了系统级别的环境变量设置,它对所有用户都有效,并且当用户首次登录时会被自动执行。

在创建用户之前执行 source /etc/profile 操作可以确保当前shell会话中的环境变量是最新的,并且任何最近对 /etc/profile 文件所做的更改都会被应用到即将进行的操作环境中。这对于保证接下来的命令(如创建新用户)在一个正确配置的环境下执行是非常重要的。

如上图所示,这是将MySQL的数据目录和日志目录的属主和属组都修改为MySQL。

useradd -s /sbin/nologin -M mysql
useradd: 用于创建新用户。
-s /sbin/nologin: 指定新用户的默认shell为/sbin/nologin,这意味着该用户不能登录到系统。
-M: 不创建用户的主目录【不创建用户的家目录】。
mysql: 新用户的用户名。
这条命令的作用是创建一个名为mysql的新用户,该用户不能登录到系统,并且没有主目录。

通过这种方式【创建mysql用户的时候,既不创建这个用户的家目录也不使得这个用户能够登录系统,】,可以确保 mysql 用户仅用于运行 MySQL 服务,而不会被用于其他目的【这对于安全性有了一些保证】。

4.编译安装mariadb的一些预处理工作。

对mariadb的tar包的处理

如上图所示,这是对mariadb的tar的解压。

这个boost中就包含了mariadb的C语言库文件

安装编译工具cmake

如上图所示,这是先安装gcc再安装cmake的软件。

5.配置MySQL安装参数

如上图所示,这是编译安装MySQL的时候,配置MySQL安装参数,

如上图所示,这就是这个错误1的解决方法。

如上图所示,这个以.txt结尾的文件记录着报出的错误,当你解决一次报错,就需要手动删除一次这个文件,不然下次还是会报出一样的错误。

然后解决完报错以后再次执行cmake的命令,去配置MySQL安装参数。

如上图所示,这个报错显示cmake编译器的内部错误,

如上图所示,相应去解决cmake编译器产生的内部错误就去安装如上图所示的三个软件组,以保证当前系统有cmake所需要的开发环境。

如上图所示,这是去查看当前系统的rpm源中有哪些软件组,这些软件组是一组软件的集合。

如上图所示,在解决完cmake内部报错以后,也需要去删除以.txt结尾的文件,然后重新配置MySQL安装参数。

如上图所示,这里的Configuring  done 表示的就是配置MySQL安装参数完成了。

6.编译安装MySQL

如上图所示,对于MySQL来说,在执行 make 之前,通常还需要运行 cmake 或者 configure 脚本来生成适合当前系统的 Makefile 文件。

make 是一个自动化构建工具,它根据名为 Makefile 的文件中定义的规则来管理并执行编译任务。当我们在Linux或其他类Unix系统上从源代码编译软件时,make 负责读取这些规则,确定哪些文件需要更新或重新编译,并按照正确的顺序执行必要的编译命令。

一旦 make 完成了编译工作,生成了所需的二进制文件和其他资源文件之后,下一步就是将这些文件部署到系统中适当的位置,这就是 make install 的职责所在。make install 同样依赖于 Makefile 中定义的规则,但它所做的不是编译源代码,而是将已经编译好的文件复制到指定的目标目录中,使得用户可以在系统中运行或使用这些文件。这一步骤通常需要管理员权限,因为默认情况下,安装目录位于系统的标准位置,比如 /usr/local/bin 或 /usr/local/lib,并且可能会覆盖现有文件

7.修改MySQL安装目录的属主和属组【属主和属组可以简称为所属】

如上图所示,这个mysql57的目录就是MySQL安装的目录,

如上图所示,这里的mysql57目录下的bin目录下有一些管理MySQL的相关命令。

如上图所示,我们需要将MySQL安装目录的属组修改为mysql这是因为,我们需要确保机器中的MySQL用户对MySQL安装目录下的文件拥有正常的查看权限。

将来MySQL的进程需要以MySQL的用户身份来启动。

7.初始化MySQL数据库,让MySQL在数据目录下生成需要的自带的一些数据库和一些数据表,

如上图所示,这是初始化MySQL数据库的操作,这里的

--initialize  【初始化】

--user=mysql【指定用户】

--basedir=/usr/local/mysql57这里是MySQL数据库的安装目录

--datadir=/mysql/data这里是指定MySQL的数据目录。

  

如上图所示,这是初始化MySQL数据库的一些反馈信息。

如上图所示,最直观的,在MySQL数据目录下,有MySQL需要的一些基础数据库和一些其他的文件。

如上图所示,这里MySQL数据库临时给root管理员生成的密码。

8.准备MySQL数据库的主配置文件

如上图所示,这是为MySQL数据库准备配置文件的操作。

在MySQL的安装目录下有一个support-files目录,这个目录下有一个my-default.cnf这个配置文件模板,将这个配置文件模板复制到/etc/目录下,并重命名为my.cnf

如上图所示,这是对MySQL配置文件的编辑工作,即对文件/etc/my.cnf的编辑工作。

9.复制MySQL服务控制脚本

如上图所示,MySQL服务的控制脚本在MySQL安装目录下的support-files目录下的mysql.server文件。

我们将这个脚本文件复制到/etc/init.d/目录下,并对这个脚本文件重命名为mysqld

然后给这个脚本加上可执行的权限,

可以使用脚本路径  -h来查看这个脚本文件的帮助信息。

10.启动MySQL服务

如上图所示,这是启动MySQL服务,看执行脚本所返回的状态没有什么用,

需要查看3306端口和mysqld的进程,此时MySQL服务正式启动。


如上图所示,这个提示信息的意思是当启动MySQL服务的时候,会在MySQL的数据目录下启动一个错误日志文件。这个错误日志文件是以主机名命名的,

11.修改root管理员密码

如上图所示,修改root密码使用命令mysqladmin命令

 

如上图所示,之所以这个命令找不到,是因为这个PATH变量没有相应的命令路径。

如上图所示,将/usr/local/mysql57/bin/这个路径,添加到PATH中.

如上图所示,这是编辑/etc/profile文件,添加export  PATH=$PATH:/usr/local/mysql57/bin/在原来的PATH的数值上在添加上MySQL命令的路径。

如上图所示,mysql命令敲tab键就可以直接使用了。

如上图所示,MySQL数据库的root用户的密码在初始化MySQL数据库的时候给出了。

如上图所示,此时就可以使用新密码去登录数据库了。

12.如果忘记MySQL数据库密码,有两种解决方案。

可以重置密码

或者【以下方法只适用于刚刚安装完数据库的时候】

在刚刚安装完数据库的时候,把密码忘记了,就可以先把MySQL服务关闭。

如上图所示,想要关闭MySQL服务可以使用kill命令去杀死相应的进程也可以使用脚本去停止MySQL服务。

如上图所示,可以把数据目录下的所有文件都删除,

然后需要我们重新运行初始化MySQL的操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2258984.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于Kubernetes(K8S)认证含金量?

Kubernetes越来越流行,目前它是市场上最佳的容器编排工具之一,也是运维工程师必备的技能之一。 大厂都在用K8S(就业行情) 虽说今年的大环境不是很好,但是从招聘数据来看,K8S岗位薪资不降反而上涨不…

Linux / Windows | ping IP + Port 测试

注:本文为 “Linux / Windows | ping IP Port 测试端口通畅” 相关文章合辑。 未整理去重。 windows 如何确认服务器上程序端口是否正常(ping、tcping) 三希已于 2023-05-22 18:08:06 修改 方式 1:ping 命令 ping 命令说明 p…

C++打造局域网聊天室第七课: Socket编程初步2

文章目录 前言一、Socket的API函数二、服务端建立Socket步骤总结 前言 C打造局域网聊天室第七课: Socket编程初步2 一、Socket的API函数 接着上一课的内容,我们在chartroom.cpp中找到如下位置 插入断点,运行 运行到断点处后,按…

vue-router路由传参的两种方式(params 和 query )

一、vue-router路由传参问题 1、概念: A、vue 路由传参的使用场景一般应用在父路由跳转到子路由时,携带参数跳转。 B、传参方式可划分为 params 传参和 query 传参; C、而 params 传参又可分为在 url 中显示参数和不显示参数两种方式&#x…

Docker Compose应用实战

文章目录 1、使用Docker Compose必要性及定义2、Docker Compose应用参考资料3、Docker Compose应用最佳实践步骤1_概念2_步骤 4、Docker Compose安装5、Docker Compose应用案例1_网站文件准备2_Dockerfile文件准备3_Compose文件准备4_使用docker-compose up启动容器5_访问6_常见…

el-table组件树形数据修改展开箭头

<style lang"scss" scoped> ::v-deep .el-table__expand-icon .el-icon-arrow-right:before {content: ">"; // 箭头样式font-size: 16px; }::v-deep .el-table__expand-icon{ // 没有展开的状态background-color: rgba(241, 242, 245, 1);color:…

5.2 JavaScript 案例 - 轮播图

JavaScript - 轮播图 文章目录 JavaScript - 轮播图基础模版一、刷新页面随机轮播图案例二、轮播图 定时器版三、轮播图完整版 基础模版 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"…

MongoDB与阿里云庆祝合作五周年,展望AI赋能新未来

12月3日&#xff0c;在印尼举行的阿里云合作伙伴大会2024上&#xff0c;MongoDB荣膺阿里云“2024技术创新成就奖”&#xff0c;该奖项旨在表彰与阿里云保持长期稳定合作&#xff0c;通过深度技术融合&#xff0c;在产品技术创新、行业区域深耕等领域取得卓越成就的伙伴。自2019…

数据结构(Queue队列)

前言&#xff1a; 在计算机科学中&#xff0c;数据结构是构建高效算法和程序的基础&#xff0c;而队列&#xff08;Queue&#xff09;作为一种经典的线性数据结构&#xff0c;具有重要的地位。与栈&#xff08;Stack&#xff09;不同&#xff0c;队列遵循“先进先出”&#xf…

EDA - Spring Boot构建基于事件驱动的消息系统

文章目录 概述事件驱动架构的基本概念工程结构Code创建事件和事件处理器创建事件总线创建消息通道和发送逻辑创建事件处理器消息持久化创建消息发送事件配置 Spring Boot 启动类测试消息消费运行项目 概述 在微服务架构和大规模分布式系统中&#xff0c;事件驱动架构&#xff…

仿iOS日历、飞书日历、Google日历的日模式

仿iOS日历、飞书日历、Google日历的日模式&#xff0c;24H内事件可自由上下拖动、自由拉伸。 以下是效果图&#xff1a; 具体实现比较简单&#xff0c;代码如下&#xff1a; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color;…

软考高级架构 - 10.5 软件架构演化评估方法

10.4 软件架构演化原则总结 本节提出了18条架构演化的核心原则&#xff0c;并为每条原则设计了简单而有效的度量方法&#xff0c;用于从系统整体层面提供实用信息&#xff0c;帮助评估和指导架构演化。 演化成本控制&#xff1a;成本小于重新开发成本&#xff0c;经济高效。进…

DocFlow票据AI自动化处理工具:出色的文档解析+抽取能力,提升企业文档数字化管理效能

目录 财务应付 金融信贷业务 近期&#xff0c;DocFlow票据自动化产品正式上线。DocFlow是一款票据AI自动化处理工具&#xff0c;支持不同版式单据智能分类扩展&#xff0c;可选功能插件配置流程&#xff0c;满足多样业务场景。 随着全球化与信息化进程&#xff0c;企业的文件…

C# 探险之旅:第二节 - 定义变量与变量赋值

欢迎再次踏上我们的C#学习之旅。今天&#xff0c;我们要聊一个超级重要又好玩的话题——定义变量与变量赋值。想象一下&#xff0c;你正站在一个魔法森林里&#xff0c;手里拿着一本空白的魔法书&#xff08;其实就是你的代码编辑器&#xff09;&#xff0c;准备记录下各种神奇…

有道云笔记批量导出

前言 最近使用有道云笔记遇到打开过慢&#xff0c;导致笔记丢失&#xff0c;需要会员才能找回之前笔记问题。 决定改用思源&#xff0c;程序中的格式比较难于通过复制保留&#xff0c;即使导出成word 或者pdf&#xff0c;需要一个专门工具导出成Markdown格式&#xff0c;批量…

离线无网环境中基于OpenEuler的everything ISO安装软件

文章目录 1.创建挂载点 2.挂载 ISO 文件: 3.配置 YUM 源 4.清理 YUM 缓存并生成新的缓存: 5.使用 YUM 安装软件包 要在 OpenEuler 系统中挂载ISO &#xff08;下载地址&#xff1a;https://repo.openeuler.openatom.cn/openEuler-20.03-LTS/ISO/x86_64/&#xff09;并使用…

2024最新树莓派4b安装ubuntu20.04.5-server版本全流程解决方案:从烧录到配置桌面到联网!!!

准备工作 硬件工具 树莓派4b&#xff0c;32GSD卡&#xff0c;读卡器 软件工具 ubuntu20.04.5镜像&#xff0c;SD卡格式化工具&#xff0c;烧录软件&#xff0c;远程连接工具。 下面是我通过百度网盘分享的文件&#xff1a;树莓派4bubuntu20.04链接&#xff1a;https://pan…

STM32 OLED屏幕驱动详解

一、介绍 OLED是有机发光二极管&#xff0c;又称为有机电激光显示&#xff08;Organic Electroluminescence Display&#xff0c; OLED&#xff09;。OLED由于同时具备自发光&#xff0c;不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广…

商业银行基于容器云的分布式数据库架构设计与创新实践

导读 本文介绍了某商业银行基于 TiDB 和 Kubernetes(简称 K8s) 构建的云化分布式数据库平台&#xff0c;重点解决了传统私有部署模式下的高成本、低资源利用率及运维复杂等问题。 通过引入 TiDB Operator 自动化管理与容器化技术&#xff0c;银行能够实现多个业务系统的高可用…

项目组件框架介绍[etcd]

文章目录 前言etcd安装Ubuntu 上通过包管理器安装通过源码安装配置 客户端开发包开发包的安装接口介绍添加一个键值对获取一个键值对租约保活机制监听 封装服务注册与发现服务注册服务发现 前言 Etcd 是一个 golang 编写的分布式、高可用的一致性键值存储系统&#xff0c;用于配…