源码编译安装MySQL

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的操作。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

threejs 建筑设计(室内设计)软件 技术调研之一 画墙体

运用threejs 开发 建筑设计(室内设计)软件 技术调研 一 画墙体 实现功能: 左键点击开始画线,移动时下一端点跟随鼠标移动,产生活动的线,并标注线长,同时标注与前一段线的夹角。标注线和夹角分…

遗传算法与深度学习实战(27)——进化卷积神经网络

遗传算法与深度学习实战(27)——进化卷积神经网络 0. 前言1. 自定义交叉算子2. 自定义突变操作符3. 进化卷积神经网络小结系列链接 0. 前言 DEAP toolbox 中提供的标准遗传操作符对于自定义的网络架构基因序列来说是不够的。这是因为任何标准的交叉算子…

2024年第十五届蓝桥杯青少组C++国赛—割点

割点 题目描述 一张棋盘由n行 m 列的网格矩阵组成,每个网格中最多放一颗棋子。当前棋盘上已有若干棋子。所有水平方向或竖直方向上相邻的棋子属于同一连通块。 现给定棋盘上所有棋子的位置,如果要使棋盘上出现两个及以上的棋子连通块,请问…

嵌入式硬件-- 元器件焊接

1.锡膏的使用 锡膏要保存在冰箱里。 焊接排线端子;138度的低温锡(锡膏), 第一次使用,直接拿东西挑一点涂在引脚上,不知道多少合适,加热台加热到260左右,放在上面观察锡融化&#…

Linux 简单命令总结

1. 简单命令 1.1. ls 列出该目录下的所有子目录与文件,后面还可以跟上一些选项 常用选项: ・-a 列出目录下的所有文件,包括以。开头的隐含文件。 ・-d 将目录象文件一样显示,而不是显示其下的文件。如:ls -d 指定目…

深入探讨可调电位器:原理、应用及编程实现

在电子电路和嵌入式系统中,可调电位器是一种常见且实用的元件,用于调节电压或电阻。无论是硬件设计还是控制系统开发,可调电位器都扮演着重要角色。本文将从可调电位器的工作原理、常见应用及其在C编程中的实际使用,帮助读者深入了…

MVC配置文件及位置

配置文件位置 默认位置 WEB-INF目录下&#xff0c;文件名&#xff1a;<servlet-name>-servlet.xml <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns"http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi"http://www.w3.…

26. Three.js案例-自定义多面体

26. Three.js案例-自定义多面体 实现效果 知识点 WebGLRenderer WebGLRenderer 是 Three.js 中用于渲染场景的主要类。它支持 WebGL 渲染&#xff0c;并提供了多种配置选项。 构造器 new THREE.WebGLRenderer(parameters) 参数类型描述parametersObject可选参数对象&…

Java_实例变量和局部变量及this关键字详解

最近得看看Java,想学一学Flink实时的东西了&#xff0c;当然Scala语法也有这样的规定&#xff0c;简单看一下这两个吧&#xff0c;都比较容易忽视 实例变量和局部变量 实例变量和局部变量是常见的两种变量类型&#xff0c;区别 作用域&#xff1a; 实例变量&#xff1a;实例变…

C++50道经典面试题

文章结尾有最新热度的文章,感兴趣的可以去看看。 本文是经过严格查阅相关权威文献和资料,形成的专业的可靠的内容。全文数据都有据可依,可回溯。特别申明:数据和资料已获得授权。本文内容,不涉及任何偏颇观点,用中立态度客观事实描述事情本身 导读 作为一种通用且面向对…

ansible自动化运维(三)jinja2模板roles角色管理

相关文章ansible自动化运维&#xff08;一&#xff09;简介及清单,模块-CSDN博客ansible自动化运维&#xff08;二&#xff09;playbook模式详解-CSDN博客ansible自动化运维&#xff08;四&#xff09;运维实战-CSDN博客 三.Ansible jinja2模板 Jinja2是Python的全功能模板引…

池化在深度学习中增强特征的作用

目录 ​编辑 引言 池化的基本作用与特征降维 池化的定义与目的 池化操作的实现 提取关键特征与计算效率的提升 池化对特征提取的影响 平均池化的应用 提高特征鲁棒性与过拟合的防止 池化对模型鲁棒性的贡献 池化防止过拟合的原理 增强多级特征与特征表达能力的提升…

【OJ题解】面试题三步问题

个人主页: 起名字真南的CSDN博客 个人专栏: 【数据结构初阶】 &#x1f4d8; 基础数据结构【C语言】 &#x1f4bb; C语言编程技巧【C】 &#x1f680; 进阶C【OJ题解】 &#x1f4dd; 题解精讲 目录 **题目链接****解题思路****1. 问题分析****2. 递归思路****3. 优化方案&a…

a few paper talked about software building process, so I learned

see also https://martinfowler.com/bliki/BlueGreenDeployment.html https://martinfowler.com/books/continuousDelivery.html https://martinfowler.com/articles/continuousIntegration.html https://swizec.com/blog/why-software-only-moves-forward/

Jenkins参数化构建详解(This project is parameterized)

本文详细介绍了Jenkins中不同类型的参数化构建方法&#xff0c;包括字符串、选项、多行文本、布尔值和git分支参数的配置&#xff0c;以及如何使用ActiveChoiceParameter实现动态获取参数选项。通过示例展示了传统方法和声明式pipeline的语法 文章目录 1. Jenkins的参数化构建1…

Tablesaw封装Plot.ly实现数据可视化

上文介绍tablesaw的数据处理功能&#xff0c;本文向你展示其数据可视化功能&#xff0c;并通过几个常用图表示例进行说明。 Plot.ly包装 可视化是数据分析的重要组成部分&#xff0c;无论你只是“查看”新数据集还是验证机器学习算法的结果。Tablesaw是一个开源、高性能的Java…

物流行业新突破:数字孪生的核心作用解析

在现代物流行业&#xff0c;效率和精准度是企业竞争的关键。随着数字化技术的发展&#xff0c;数字孪生作为一种新兴技术&#xff0c;正在智慧物流领域崭露头角。通过构建真实物流系统的虚拟映射&#xff0c;数字孪生帮助企业实现全方位的管理优化&#xff0c;为智慧物流带来了…

手机租赁系统开发全流程解析与实用指南

内容概要 在如今快速发展的科技时代&#xff0c;手机租赁系统已经成为一种新兴的商业模式&#xff0c;非常符合当下市场需求。那么&#xff0c;在开发这样一个系统的时候&#xff0c;首先要从需求分析和市场调研开始。在这一阶段&#xff0c;你需要了解用户需要什么&#xff0…

ViewModel

ViewMode是MVVM架构模式中VM层对应的类&#xff0c;它的作用是存储界面数据&#xff0c;并和界面发生数据交互。ViewModel能感知生命周期&#xff0c;并且在界面由于配置问题发生重建时候&#xff0c;可以保持当前的数据不变。生命周期如下&#xff1a; ViewMode由ViewModePr…

Android -- [SelfView] 自定义弹窗式颜色选择器

Android – [SelfView] 自定义弹窗式颜色选择器 PS: 1. 弹框式显示&#xff1b; 2. 支持透明度设置&#xff1b; 3. 支持拖动控件选择颜色&#xff1b; 4. 支持 ARGB | HEX 数值填写预览颜色并返回&#xff1b; 5. 输出支持Hex 和 Int 两种格式&#xff1b;效果 使用方法&…