源码编译安装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的操作。

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

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

相关文章

Hive3.X——异常处理Could not create ServerSocket on address 0.0.0.0/0.0.0.0:10000

Hive3.X——异常处理Could not create ServerSocket on address 0.0.0.0/0.0.0.0:10000 01 前言 大数据系列,学到了Hive,搭建环境的时候,因为使用的是本机WSL2(别问为啥不用VMware,问就是条件有限,而且WS…

【数据结构——内排序】快速排序(头歌实践教学平台习题)【合集】

目录😋 任务描述 测试说明 我的通关代码: 测试结果: 任务描述 本关任务:实现快速排序算法。 测试说明 平台会对你编写的代码进行测试: 测试输入示例: 10 6 8 7 9 0 1 3 2 4 5 (说明:第一行是元素个数&a…

若依实现图片上传时自动添加水印

文章目录 总体思路1. 修改通用上传方法2. 去除文件路径前两级目录3. 添加水印方法运行效果总结 为了解决图盗用,并有效保护图片版权,若依项目需要实现一个功能:上传图片时,自动在图片上添加水印。这不仅可以有效防止盗用&#xff…

Mave下载、安装以及idea(2024)进行配置

目录 Maven简介 Maven下载 配置环境变量 配置本地仓库 在idea环境配置Maven 使用Maven创建工程 创建一个普通的java工程 创建一个Web项目 Maven简介 Maven是一个跨平台的项目管理工具,也是Apache组织中的一个成功的开源项目。它主要服务于基于Java的项目构…

Linux 简单命令总结

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

【反无人机目标检测与跟踪】DUT Anti-UAV数据集介绍

DUT Anti-UAV数据集是IEEE TITS 2023上大连理工大学团队提出的Vision-based Anti-UAV Detection and Tracking论文中提出的一个可见光反无人机检测与跟踪数据集。 因为反无人机目标检测与跟踪的数据集都比较少,因此这个数据集也非常宝贵。 这个数据集的链接如下 数…

【热力学与工程流体力学】流体静力学实验,雷诺实验,沿程阻力实验,丘里流量计流量系数测定,局部阻力系数的测定,稳态平板法测定材料的导热系数λ

关注作者了解更多 我的其他CSDN专栏 过程控制系统 工程测试技术 虚拟仪器技术 可编程控制器 工业现场总线 数字图像处理 智能控制 传感器技术 嵌入式系统 复变函数与积分变换 单片机原理 线性代数 大学物理 热工与工程流体力学 数字信号处理 光电融合集成电路…

Angular由一个bug说起之十二:网页页面持续占用CPU过高

随着网络日益发达,网页的内容也更加丰富,形式也更加多样化。而随之而来的性能问题也不容小觑。这篇文章我会根据我在实践中遇到的一个问题来总结,我在面对性能问题的一些解决步骤,希望能对大家有所启发。 查找问题原因 我接触的…

游戏引擎学习第44天

仓库: https://gitee.com/mrxiao_com/2d_game 向量数学的重要性 矢量数学非常重要,因为 它在某种程度上类似于将C和C视为高于汇编语言的语言,从而使得我们能够以略高的层次思考问题,同时保留大部分性能好处和直接访问的类型。这种思维方式就…

通俗易懂的 Nginx 反向代理 配置

通俗易懂的 Nginx 反向代理 配置 首先 root 与 alias 的区别 root 是直接拼接 root location location /i/ {root /data/w3; }当请求 /i/top.gif ,/data/w3/i/top.gif 会被返回。 alias 是用 alias 替换 location location /i/ {alias /data/w3/images/; }当请…

【NLP高频面题 - 词嵌入篇】为什么说Word2vec的词向量是静态的?

【NLP高频面题 - 词嵌入篇】为什么说Word2vec的词向量是静态的? 重要性:★★ NLP Github 项目: NLP 项目实践:fasterai/nlp-project-practice 介绍:该仓库围绕着 NLP 任务模型的设计、训练、优化、部署和应用&#xf…

Android -- WebView之loadData加载html字符串显示网页

目录 前言1. loadUrl 加载网页地址2. loadData 加载Html字符来显示网页3. loadDataWithBaseURL4. 总结 前言 最近在给一个老项目做64位so文件的适配,当应用发布到应用市场上后,用户反馈64位手机上的网页加载不出内容,但32位的手机上是正常…

Docker在Ubuntu和CentOS系统下的安装

目录 1. 各版本平台支持情况2. 在Ubuntu系统下安装docker3. 常见报错4. Docker的镜像源修改5. Docker目录修改6. 在CentOS系统下安装docker 1. 各版本平台支持情况 (1)平台支持情况如下: Server 版本 桌面版本 2. 在Ubuntu系统下安装docker…

Ansible-Playbook基础学习

一.Ansible Playbook基本介绍 1.Playbook 介绍 Ansible Playbook 是 Ansible 的核心组件之一,它是一个用于配置管理、应用部署和任务自动化的文本文件,使用 YML格式编写。YML 的语法简洁明了,易于阅读和编写,使得用户可以方便地…

基于PHP课堂签到系统的设计与实现

摘 要 随着教育业的迅速发展和学生人数的不断增加,导致在班级登记制度中传统的“点到”方式不能适应学校的实际需要。从而需要设计一个好的课堂签到系统将会对课堂签到管理工作带来事半功倍的效果。文章着重介绍了基于实践应用的班级签到系统的开发流程&#xff0c…

【智体OS】官方上新发布智体电视:基于rtpc和rttouchpad实现智体电视的手机遥控-可安装任意PC应用用于智体电视

【智体OS】官方上新发布智体电视:基于rtpc和rttouchpad实现智体电视的手机遥控-可安装任意PC应用用于智体电视 dtns.network是一款主要由JavaScript编写的智体世界引擎(内嵌了three.js编辑器的定制版-支持以第一视角浏览3D场馆),…

保姆级教学 uniapp绘制二维码海报并保存至相册,真机正常展示图片二维码

一、获取二维码 uni.request({url: https://api.weixin.qq.com/wxa/getwxacode?access_token${getStorage("token")},responseType: "arraybuffer",method: "POST",data: {path: "/pages/index/index"},success(res) {// 转换为 Uint…

Vue.createApp的对象参数

目录 template 属性 data 属性 methods 属性 疑问 function 函数的两种写法 methods 属性中 this 的指向 总结 Vue 实例是通过 Vue.createApp() 创建的,该函数需要接收一个对象作为参数,该对象可添加 template、data、methods 等属性。 template …

LLM大语言模型私有化部署-OpenEuler22.03SP3上容器化部署Ollama与OpenWebUI

背景 你是不是也有私有化部署大模型的需求?如今有了 Ollama , HuggingFace , ModelScope 等开源平台,我们可以非常方便地搭建一个属于自己的大模型,如果网速给力,真是分分钟~~。简单起见,这篇文…

Linux——rootfs根文件系统构建

根文件系统也叫做rootfs FATFS这类的文件系统属于Linux内核的一部分,属于软件代码,所以ROOTFS不等于FATFS。 Linux的根文件系统实际上是一个文件夹或者叫目录,这个目录下会有许多子目录,这些目录中存放许多Linux运行所必须的文件…