Ubuntu(WSL2) mysql8.0.31 源码安装

要在 Ubuntu 上使用调试功能安装 MySQL 8.0 的源码,可以按照以下详细步骤进行操作:

1. 更新系统

首先,确保你的 Ubuntu 系统是最新的。运行以下命令更新系统软件包:

sudo apt update 
sudo apt upgrade

2. 下载 MySQL 源码

访问 MySQL 官方网站(MySQL :: Download MySQL Community Server)并下载 MySQL 8.0 的源码包(mysql-boost-8.0.31.tar.gz)。

3. 安装编译依赖

(1)更换镜像源

参考:Linux Ubuntu 修改 /etc/apt/sources.list (镜像源)文件(非常实用)-CSDN博客

(2)安装 gcc

sudo apt install gcc-11

(3)安装构建 MySQL 所需的编译依赖。运行以下命令安装所需的软件包:

sudo apt install build-essential cmake libncurses5-dev libssl-dev libboost-all-dev gdb

注意,我们添加了 gdb 软件包,它是用于调试的工具。

4. 解压源码包

将下载的源码包解压到一个目录中。假设你将其解压到 /usr/local 目录下。

sudo tar xvf mysql-boost-8.0.31.tar.gz

5. 创建用户和组

groupadd mysql
useradd -r -g mysql -M -s /bin/false mysql
//参数说明:-M 不创建家目录 -s 指定 -r 创建系统账户

6. 创建构建目录

进入解压后的 MySQL 源码目录,并创建一个用于构建的目录。

cd mysql-8.0.31 
sudo mkdir build 
cd build

7. 配置构建选项

运行 cmake 命令来配置构建选项。你可以根据需要自定义选项,下面是一个示例:

sudo cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/var/lib/mysql -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost -DWITH_DEBUG=1

注意,我们添加了 -DWITH_DEBUG=1 选项来启用调试功能。

上述命令是用于配置和构建 MySQL 数据库的 CMake 命令。下面是每个选项的解释:

  • -DCMAKE_INSTALL_PREFIX=/usr/local/mysql:指定 MySQL 安装的路径。在这里,MySQL 将被安装到 /usr/local/mysql 目录下。
  • -DMYSQL_DATADIR=/var/lib/mysql:指定 MySQL 数据文件的存储路径。在这里,数据文件将被存储在 /var/lib/mysql 目录下。
  • -DSYSCONFDIR=/etc/mysql:指定 MySQL 配置文件的存储路径。在这里,配置文件将被存储在 /etc/mysql 目录下。
  • -DWITH_INNOBASE_STORAGE_ENGINE=1:启用 InnoDB 存储引擎支持。InnoDB 是 MySQL 的默认存储引擎,提供了事务支持和高级数据管理功能。
  • -DWITH_MEMORY_STORAGE_ENGINE=1:启用 Memory 存储引擎支持。Memory 存储引擎将数据存储在内存中,适用于需要快速读写操作的场景。
  • -DWITH_PARTITION_STORAGE_ENGINE=1:启用 Partition 存储引擎支持。Partition 存储引擎允许将表分割成多个分区,以提高查询性能和管理大量数据。
  • -DWITH_BOOST=/usr/include/boost:指定 Boost 库的路径。Boost 是一个 C++ 库集合,MySQL 在某些功能上使用了 Boost 库。
  • -DWITH_DEBUG=1:启用调试模式,编译生成带有调试信息的 MySQL 可执行文件。这对于开发和调试 MySQL 可能会有帮助。

这些选项允许你根据需要自定义 MySQL 的构建和安装过程。根据你的需求,可以调整这些选项的值或添加其他选项来满足特定的配置需求。

说明:

  • 上述 sudo cmake 命令后面的 -DDOWNLOAD_BOOST=1 -DWITH_BOOST= 指令是告诉 CMake 在指定的目录中查找 Boost 库,如果找不到,则自动下载并解压。,其中  是你保存 Boost 库的目录路径。
  • 直接使用 sudo cmake 命令下载 Boost 库可能会出现失败,失败时多尝试几次。
  • 手动下载并解压,放到指定路径下即可,下载连接:Boost 库,使用该方式如果报如下错误,则执行 sudo apt install pkg-config 命令安装对应包,然后再次执行即可。

8. 编译和安装

运行 make 命令编译 MySQL,并使用 make install 命令安装到指定目录。

sudo make -j4 
sudo make install

9. 配置 my.cnf 文件

vi /etc/my.cnf//my.cnf文件内容如下[client] 
socket=/usr/local/mysql/data/mysql.sock [mysqld] 
datadir=/usr/local/mysql/data 
socket=/usr/local/mysql/data/mysql.sock #Disabling symbolic-links is recommended to prevent assorted security risks 
symbolic-links=0 
log-error=/usr/local/mysql/data/mysqld.log 
pid-file=/usr/local/mysql/data/mysqld.pid 
server-id=1

说明:my.cnf文件中的 /usr/local/mysql 为mysql安装路径,根据自己情况进行更改,该mysql安装目录为:/usr/local/mysql;

10. 初始化

# 进入安装目录 
cd /usr/local/mysql # 初始化 
bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql --port=3306

说明:初始化文件 my.cnf 可以放在不同的文件夹下(一台机器上装多个 mysql 时,可以在不同的文件夹下创建 my.cnf),但初始化命令中使用到的 my.cnf 路径要与其保持一致;

11. 寻找初始密码

初始化完成后,找到 mysql 安装目录下的 data 文件夹,初始化密码在 mysqld.log 日志中,自行找到即可,然后用初始密码进行登陆;初始密码实例如下:

12. 启动 mysql

/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --port=3306 &

13. 设置 mysql 密码

# 执行下述命令并使用初始密码进入 
mysql /usr/local/mysql/bin/mysql -h127.0.0.1 -uroot -p -P3306 ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

14. mysql8.0.31 源码安装完成

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

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

相关文章

uniapp公共css

/* 弹性布局 */ .flex{display: flex; } .a-c{align-items: center; } .a-s{align-items: flex-start; } .a-e{align-items: flex-end; } .j-c{justify-content: center; } .j-sb{justify-content: space-between; } .j-s{justify-content: flex-start; } .j-e{justify-content…

Redis 特殊数据类型

目录 1、redis地理空间(GEO) 2、redis基数统计(HyperLogLog) 3、redis位图(bitmap) 4、redis位域bitfield) 5、redis流(Stream) 1、redis地理空间(GEO) Redis 的地理空间数据结构(GEO)可以用于存储地理位置信息,并支持附近位置搜索等功能…

通讯协议学习之路(实践部分):UART开发实践

通讯协议之路主要分为两部分,第一部分从理论上面讲解各类协议的通讯原理以及通讯格式,第二部分从具体运用上讲解各类通讯协议的具体应用方法。 后续文章会同时发表在个人博客(jason1016.club)、CSDN;视频会发布在bilibili(UID:399951374) 本文…

gpt支持json格式的数据返回(response_format: ‘json_object‘)

Api.h5.chatCreateChatCompletion({model: gpt-3.5-turbo-1106,token: sk-f4fe8b67-fcbe-46fd-8cc9-fd1dac5d6d59,messages: [{role: user,content:使用json格式返回十二生肖,包含中文名和英文名,[{id:"1", enName:"", cnName: &quo…

初始MySQL(二)(表的增删查改)

目录 修改表 CRUD(增删改查) insert语句(表中增加数据) update语句(修改表中的数据) delete删除语句 select语句 修改表 添加列 ALTER TABLE tablename ADD (column datatype [DEFAULT expr] [, column datatype] ...); 修改列 ALTER TABLE tablename MODIFY (column …

JavaScript红宝书第8章:对象、类与面向对象编程(1/4)

原生JavaScript之对象、类与面向对象编程 理解对象属性类型数据属性访问器属性 定义多个属性读取属性特征合并对象对象标识及相等判定对象新语法属性值简写动态给属性命名 简写方法对象解构 小结 理解对象 定义:对象为一组属性的无序集合,严格来说&…

ROS机器人毕业论文数量井喷-数据日期23年11月13日

背景 ROS机器人论文数量在近3年井喷发展,仅硕士论文知网数据库可查阅就已经达到2264篇,实际相关从业者远远远大于这个数值。 按日期排序,每页20篇,23年还未结束,检索本身也不一定完备,就超过200。 相关从业…

语音识别芯片在产品应用上的难点列举

语音识别技术,作为人工智能领域中的一颗璀璨明珠,已经广泛应用于用户交互、智能家居、语音助手等多个领域。它为我们的生活带来了诸多便利,使得我们可以更加高效地与电子设备进行互动。然而,语音识别技术的实现,依赖于…

单例模式的双重检查锁定是什么

单例模式的双重检查锁定是什么? 单例模式是一种常见的设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。双重检查锁定(Double-Checked Locking)是一种在单例模式中使用的性能优化技术。 在传统的单例模式…

Android超简单的显示网络图片方法

Android显示网络图片的方法如下&#xff1a; 1、首先&#xff0c;需要在AndroidManifest.xml文件中添加网络权限&#xff1a; <uses-permission android:name"android.permission.INTERNET" /> 2、在布局文件中添加ImageView控件&#xff1a; <ImageVie…

强烈建议linux中nvidia 545.29驱动不要升

我之前一直用终端连接我的工作站&#xff08;系统是arch rolling状态&#xff09;&#xff0c;结果昨天回家难得想试试545驱动下的效果。结果一用chrome播放视频就卡&#xff0c;甚至后面进Login界面也会卡住鼠标。 折腾了一晚上用 $sudo downgrade nvidia nvidia-prime nvid…

比尔.盖茨最新思考和宣言, 未来5年AI将彻底改变生活!

人工智能即将彻底改变你使用计算机的方式 并颠覆软件行业。 比尔盖茨 今天我仍然像保罗艾伦和我创办微软时一样热爱软件。但是&#xff0c;尽管从那时起的几十年里它已经有了很大的进步&#xff0c;但在很多方面&#xff0c;软件仍然相当愚蠢。 要在计算机上执行任何任务&am…

js控制手机蓝牙

要使用JavaScript控制手机蓝牙&#xff0c;您需要使用Web Bluetooth API。这是一种新的Web API&#xff0c;可以让Web应用程序访问和控制蓝牙设备。 以下是一些步骤&#xff0c;以便您开始使用Web Bluetooth API&#xff1a; 检查浏览器支持&#xff1a;首先&#xff0c;您需要…

docker基于debian11基础环境安装libreoffice

首先下载指定版本的libreoffice&#xff0c;注意debian11下需要选择Linux (64-bit) (deb) 官方下载地址&#xff1a;https://www.libreoffice.org/download/download-libreoffice/?typedeb-x86_64&version7.6.2&langzh-CN 将文件上传到服务器并解压缩备用&#xff0c…

PostgreSQL 入门教程

PostgreSQL 入门教程 1. 历史背景2. 概念3. 特点4. 用法4.1 数据库连接4.2 数据库创建4.3 表创建4.4 数据插入4.5 数据查询4.6 数据更新4.7 数据删除 5. 安装步骤6. 简单示例7. 扩展7.1 数据类型7.2 查询优化7.3 并发控制7.4 数据备份和恢复7.5 扩展性和高可用性7.6 安全性加固…

pyTorch Hub 系列#2:VGG 和 ResNet

一、说明 在上一篇教程中,我们了解了 Torch Hub 背后的本质及其概念。然后,我们使用 Torch Hub 的复杂性发布了我们的模型,并通过相同的方式访问它。但是,当我们的工作要求我们利用 Torch Hub 上提供的众多全能模型之一时,会发生什么? 在本教程中,我们将学习如何利用称为…

「Verilog学习笔记」4bit超前进位加法器电路

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 timescale 1ns/1nsmodule lca_4(input [3:0] A_in ,input [3:0] B_in ,input C_1 ,output wire CO ,output wire [3:0] …

SpringBoot3+Vue3+Mysql+Element Plus完成数据库存储blob类型图片,前端渲染后端传来的base64类型图片

前言 如果你的前后端分离项目采用SpringBoot3Vue3Element Plus&#xff0c;且在没有OSS&#xff08;对象存储&#xff09;的情况下&#xff0c;使用mysql读写图片&#xff08;可能不限于图片&#xff0c;待测试&#xff09;。 耗时三天&#xff0c;在踩了无数雷后&#xff0c…

Android BottomSheetDialog中列表滑动冲突问题

前言 使用BottomSheetDialog弹窗时&#xff0c;里面嵌套了一个纵向的RecyclerView&#xff0c;弹出后加载列表数据&#xff0c;发现弹窗不能滑动&#xff0c;产生了滑动冲突。 一、使用步骤 1.布局示例 代码如下&#xff08;示例&#xff09;&#xff1a; <androidx.appco…

Lightroom Classic 2023 v12.4

Lightroom Classic 2023是一款图像处理软件&#xff0c;是数字摄影后期制作的重要工具之一。与其他图像处理软件相比&#xff0c;Lightroom Classic具有以下特点&#xff1a; 高效的图像管理&#xff1a;Lightroom Classic提供了强大的图像管理功能&#xff0c;可以轻松导入、…