MySQL技术内幕1:内容介绍+MySQL编译使用介绍

news2025/6/10 1:26:18

文章目录

    • 1.整体内容介绍
    • 2.下载编译流程
      • 2.1 安装编译工具和依赖库
      • 2.2 下载编译
    • 3.配置MySQL
      • 3.1 数据库初始化
      • 3.2 编辑配置文件
      • 3.3 启动停止MySQL
      • 3.4 登录并修改密码

1.整体内容介绍

MySQL技术系列文章将从MySQL下载编译,使用到MySQL各组件使用原理+源码分析,采用自底向上,从整体到局部的方式来进行详细分析(从MySQL系统概述到存储管理,再到索引,查询编译,事务,并发,安全,复制和分布式相关内容)。本篇为第一篇,也就是环境准备篇,以此环境为基础来进行后续的介绍。

2.下载编译流程

现在应用比较多的新版本是8.x.x,所以采用8.0.33版本来进行源码的分析。

2.1 安装编译工具和依赖库

sudo apt update
sudo apt install -y cmake gcc g++ make libncurses-dev libssl-dev libboost-all-dev libbz2-dev  pkg-config  libldap2-dev libsasl2-dev

2.2 下载编译

cmake ..  \
-DCMAKE_INSTALL_PREFIX=/home/xxx/openSource/DataBase/mysql/install  \
-DMYSQL_DATADIR=/home/xxx/openSource/DataBase/mysql/data  \
-DWITH_BOOST=../boost \
-DSYSCONFDIR=/home/xxx/openSource/DataBase/mysql/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ 
-DWITH_READLINE=1  \
-DWITH_DEBUG=1   \
-DENABLED_LOCAL_INFILE=1 \ 
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ 
-DDEFAULT_CHARSET=utf8mb4  \
-DDEFAULT_COLLATION=utf8mb4_general_ci \ 
-DMYSQL_TCP_PORT=3306   \
-DWITH_SSL=system 

参数详解:
-DCMAKE_INSTALL_PREFIX      //安装目录
-DSYSCONFDIR                //配置文件目录(默认可以不安装配置文件)
-DMYSQL_DATADIR                   //数据存储目录
-DWITH_BOOST                          //boost目录
-DINSTALL_MANDIR                 //帮助文档 
-DMYSQL_TCP_PORT                //默认端口号
-DMYSQL_UNIX_ADDR             //sock文件位置
-DDEFAULT_CHARSET              //默认字符集。字符集的支持,可以调
-DEXTRA_CHARSETS                //扩展的字符集支持所有的
-DDEFAULT_COLLATION         //默认字符集为utf8;默认校对规则为utf8_general_ci
-DWITH_READLINE                   //上下翻历史命令
-DWITH_SSL                              //ssl路径,可以使用系统的system,也可以使用自己编译的指定路径下的
-DWITH_EMBEDDED_SERVER //编译并启用嵌入式MySQL服务器
-DENABLED_LOCAL_INFILE     //从本地导入数据
-DWITH_INNOBASE_STORAGE_ENGINE    //编译InnoDB存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE       //编译ARCHIVE存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE //编译BLACKHOLE引擎
-DWITH_DEBUG                      //debug版本
#编译安装
make -j8 && make install

过程中可能出现的问题:
1)CMake Error at CMakeLists.txt:1374 (MESSAGE):Please install the patchelf(1) utility:直接注释掉cmakefile中对应的检查即可。
2)undefined reference to `EVP_aes_128_cfb1’:OpenSSL 库版本不兼容或配置不正确。

# 下载 OpenSSL 源码
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
tar -zxvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w

# 配置并编译
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
make
sudo make install

# 更新库路径
echo "/usr/local/openssl/lib" | sudo tee /etc/ld.so.conf.d/openssl.conf
sudo ldconfig

# 验证安装
/usr/local/openssl/bin/openssl version
#更新cmake参数,清理后编译
-DWITH_SSL=/usr/local/openssl

3.配置MySQL

3.1 数据库初始化

cd ~/openSource/DataBase/mysql/install   # 指定的安装路径
sudo bin/mysqld --initialize --user=xxx --basedir=/home/xxx/openSource/DataBase/mysql/install --datadir=/home/xxx/openSource/DataBase/mysql/data/

此时会生成临时密码,后面可以在日志中查找,也可以在这记录一下。
在这里插入图片描述

3.2 编辑配置文件

指定的配置文件路径下去编辑:vim

/home/xxx/openSource/DataBase/mysql/etc/my.cnf
[mysqld]
basedir=/home/xxxx/openSource/DataBase/mysql/install
datadir=/home/xxxx/openSource/DataBase/mysql/data
socket=/tmp/mysql.sock
user=mysql

[client]
socket=/tmp/mysql.sock

3.3 启动停止MySQL

/home/xxx/openSource/DataBase/mysql/install/support-files/mysql.server start
/home/xxx/openSource/DataBase/mysql/install/support-files/mysql.server stop

3.4 登录并修改密码

./bin/mysql -u root -p

输入临时密码后登录成功
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘你的新密码’;
在这里插入图片描述
以上就完成了MySQL的编译安装和配置,可以使用其进行调试了。

原文链接

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

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

相关文章

网络安全问题及对策研究

摘 要 网络安全问题一直是近年来社会乃至全世界十分关注的重要性问题,网络关乎着我们的生活,政治,经济等多个方面,致力解决网络安全问题以及给出行之有效的安全策略是网络安全领域的一大目标。 本论文简述了课题的开发背景&…

【计算机网络】NAT、代理服务器、内网穿透、内网打洞、局域网中交换机

🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:计算机网络 🌹往期回顾🌹:【计算机网络】数据链路层——ARP协议 🔖流水不争,争的是滔滔不息 一、网络地址转…

在 Vue 的template中使用 Pug 的完整教程

在 Vue 的template中使用 Pug 的完整教程 引言 什么是 Pug? Pug(原名 Jade)是一种高效的网页模板引擎,通过缩进式语法和简洁的写法减少 HTML 的冗长代码。Pug 省略了尖括号和闭合标签,使用缩进定义结构,…

【立体匹配】:双目立体匹配SGBM:(1)运行

注:这是一个专题,我会一步步介绍SGBM的实现,按照我的使用和优化过程逐步改善算法,附带实现方法 系列文章【立体匹配】:双目立体匹配SGBM:(1)运行 【立体匹配】:双目立体匹…

< 自用文 OS有关 新的JD云主机> 国内 京东云主机 2C4G 60G 5Mb 498/36月 Ubuntu22

攒了这么久,废话一些: 前几周很多事儿,打算回北京,开个清真的德克萨斯烤肉店,写了一篇 : < 自用文 Texas style Smoker > 美式德克萨斯烟熏炉 从设计到实现 (第一部分&…

《架构即未来》笔记

思维导图 第一部分:可扩展性组织的人员配置 第二部分:构建可扩展的过程 第三部分:可扩展的架构方案 第四部分:其他的问题和挑战 资料 问软件工程研究所: https://www.sei.cmu.edu/ AKF公司博客: http://www.akfpart…

ubuntu2404 gpu 没接显示器,如何保证远程显示的分辨率

1. 使用 xserver-xorg-video-dummy 创建虚拟显示器 如果系统在无物理显示器连接时无法识别显示输出,可以使用 xserver-xorg-video-dummy 驱动程序创建虚拟显示器。以下是设置步骤: 安装虚拟显示器驱动程序: sudo apt install xserver-xorg-v…

【基于阿里云搭建数据仓库(离线)】使用UDTF时出现报错“FlatEventUDTF cannot be resolved”

目录 问题: 可能的原因有: 解决方法: 问题: 已经将包含第三方依赖的jar包上传到dataworks,并且成功注册函数,但是还是报错:“FlatEventUDTF cannot be resolved”,如下&#xff1a…

Pycharm的终端无法使用Anaconda命令行问题详细解决教程

很多初学者在Windows系统上安装了Anaconda后,在PyCharm终端中运行Conda命令时,会遇到以下错误: conda : 无法将“conda”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 请检查名称的拼写,如果包括路径,请确保…

SAP学习笔记 - 开发24 - 前端Fiori开发 Filtering(过滤器),Sorting and Grouping(排序和分组)

上一章讲了SAP Fiori开发的表达式绑定,自定义格式化等内容。 SAP学习笔记 - 开发23 - 前端Fiori开发 Expression Binding(表达式绑定),Custom Formatters(自定义格式化)-CSDN博客 本章继续讲SAP Fiori开发…

自建 dnslog 回显平台:渗透测试场景下的隐蔽回显利器

🔍 背景介绍 在渗透测试与红队评估过程中,DNS 外带(DNS Exfiltration) 是一种常见且隐蔽的通信通道。由于多数目标环境默认具备外网 DNS 解析能力,即便在 无回显、无文件上传权限 的条件下,仍可通过 DNS 请…

Digital IC Design Flow

Flow介绍 1.设计规格 架构师根据市场需求制作算法模型(Algorithm emulation)及芯片架构(Chip architecture),确定芯片设计规格书(Chip design specification) 原型验证 原型验证(Prototype Validation)通常位于产品开发流程的前期阶段,主要是在设计和开发的初步阶…

设备健康管理的范式革命:中讯烛龙全链路智能守护系统

当工业设备的“亚健康”状态导致隐性产能损失高达23%时,中讯烛龙推出 ​​“感知-诊断-决策-闭环”四位一体解决方案,让设备全生命周期健康管理成为企业增长的隐形引擎。 一、行业痛点:传统运维的三大断层 1. 健康感知盲区 某风电场因无法捕…

循环神经网络(RNN):从理论到翻译

循环神经网络(RNN)是一种专为处理序列数据设计的神经网络,如时间序列、自然语言或语音。与传统的全连接神经网络不同,RNN具有"记忆"功能,通过循环传递信息,使其特别适合需要考虑上下文或顺序的任…

Redis:常用数据结构 单线程模型

🌈 个人主页:Zfox_ 🔥 系列专栏:Redis 🔥 常用数据结构 🐳 Redis 当中常用的数据结构如下所示: Redis 在底层实现上述数据结构的过程中,会在源码的角度上对于上述的内容进行特定的…

夏普比率(Sharpe ratio)​

具有投资常识的人都明白,投资光看收益是不够的,还要看承受的风险,也就是收益风险比。 夏普比率描述的正是这个概念,即每承受一单位的总风险,会产生多少超额的报酬。 用数学公式描述就是: 其中&#xff1…

【优选算法】模拟 问题算法

​一&#xff1a;替换所有的问号 class Solution { public:string modifyString(string s) {int n s.size();for(int i 0; i < n; i){if(s[i] ?){for(char ch a; ch < z; ch){if((i0 && ch !s[i1]) || (in-1 && ch ! s[i-1]) || ( i>0 &&…

Flask+LayUI开发手记(八):通用封面缩略图上传实现

前一节做了头像上传的程序&#xff0c;应该说&#xff0c;这个程序编写和操作都相当繁琐&#xff0c;实际上&#xff0c;头像这种缩略图在很多功能中都会用到&#xff0c;屏幕界面有限&#xff0c;绝不会给那么大空间摆开那么大一个界面&#xff0c;更可能的处理&#xff0c;就…

低代码采购系统搭建:鲸采云+能源行业订单管理自动化案例

在能源行业数字化转型浪潮下&#xff0c;某大型能源集团通过鲸采云低代码平台&#xff0c;仅用3周时间就完成了采购订单管理系统的定制化搭建。本文将揭秘这一成功案例的实施路径与关键成效。 项目背景与挑战 该企业面临&#xff1a; 供应商分散&#xff1a;200供应商使用不同…

android关于pthread的使用过程

文章目录 简介代码流程pthread使用hello_test.cppAndroid.bp 编译过程报错处理验证过程 简介 android开发经常需要使用pthread来编写代码实现相关的业务需求 代码流程 pthread使用 需要查询某个linux函数的方法使用&#xff0c;可以使用man 函数名 // $ man pthread_crea…