MySQL源码编译

华子目录

  • 下载源码包
  • 上传并解压
  • 安装
    • `cmake环境检测`
    • `make编译`
    • `make install安装`
  • 部署

下载源码包

  • 下载相应源码包mysql5.7编译安装需要boost库,这里官网下载boost源码包
  • https://downloads.mysql.com/archives/community/

在这里插入图片描述

上传并解压

[root@mysql-node1 ~]# du -sh mysql-boost-5.7.44.tar.gz
51M     mysql-boost-5.7.44.tar.gz#解压
[root@mysql-node1 ~]# tar -zxf mysql-boost-5.7.44.tar.gz[root@mysql-node1 ~]# du -sh mysql-5.7.44/
475M    mysql-5.7.44/

安装

cmake环境检测

这里我们先不安装它的依赖包,我们在安装的过程中安装依赖包

  • 安装cmake
[root@mysql-node1 ~]# cd mysql-5.7.44/
[root@mysql-node1 mysql-5.7.44]# yum install cmake -y
  • 使用cmake进行环境检测
[root@mysql-node1 mysql-5.7.44]# cmake \
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \  #指定安装路径
> -DMYSQL_DATADIR=/data/mysql \  #指定数据目录
> -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \  #指定套接字文件
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \  #指定启用INNODB存储引擎,默认用myisam
> -DWITH_EXTRA_CHARSETS=all \  #扩展字符集
> -DDEFAULT_CHARSET=utf8mb4 \  #指定默认字符集
> -DDEFAULT_COLLATION=utf8mb4_unicode_ci \  #指定默认校验字符集
> -DWITH_BOOST=/root/mysql-5.7.44/boost/boost_1_59_0/  #指定c++库依赖
  • 在检测过程中,会生成一个CMakeCache.txt缓存文件,文件中记录了检测时的全部过程
  • 如果检测失败,需要重新检测时,需要删除CMakeCache.txt缓存文件

在这里插入图片描述

  • 安装gcc-c++
[root@mysql-node1 mysql-5.7.44]# yum install gcc-c++ -y
  • 继续检测
[root@mysql-node1 mysql-5.7.44]# rm -rf CMakeCache.txt[root@mysql-node1 mysql-5.7.44]# cmake \
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \  #指定安装路径
> -DMYSQL_DATADIR=/data/mysql \  #指定数据目录
> -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \  #指定套接字文件
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \  #指定启用INNODB存储引擎,默认用myisam
> -DWITH_EXTRA_CHARSETS=all \  #扩展字符集
> -DDEFAULT_CHARSET=utf8mb4 \  #指定默认字符集
> -DDEFAULT_COLLATION=utf8mb4_unicode_ci \  #指定默认校验字符集
> -DWITH_BOOST=/root/mysql-5.7.44/boost/boost_1_59_0/  #指定c++库依赖

在这里插入图片描述

  • 安装openssl-devel
[root@mysql-node1 mysql-5.7.44]# yum install openssl-devel -y
  • 继续检测
[root@mysql-node1 mysql-5.7.44]# rm -rf CMakeCache.txt[root@mysql-node1 mysql-5.7.44]# cmake \
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \  #指定安装路径
> -DMYSQL_DATADIR=/data/mysql \  #指定数据目录
> -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \  #指定套接字文件
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \  #指定启用INNODB存储引擎,默认用myisam
> -DWITH_EXTRA_CHARSETS=all \  #扩展字符集
> -DDEFAULT_CHARSET=utf8mb4 \  #指定默认字符集
> -DDEFAULT_COLLATION=utf8mb4_unicode_ci \  #指定默认校验字符集
> -DWITH_BOOST=/root/mysql-5.7.44/boost/boost_1_59_0/  #指定c++库依赖

在这里插入图片描述

  • 安装ncurses-devel
[root@mysql-node1 mysql-5.7.44]# yum install ncurses-devel -y
  • 继续检测
[root@mysql-node1 mysql-5.7.44]# rm -rf CMakeCache.txt[root@mysql-node1 mysql-5.7.44]# cmake \
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \  #指定安装路径
> -DMYSQL_DATADIR=/data/mysql \  #指定数据目录
> -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \  #指定套接字文件
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \  #指定启用INNODB存储引擎,默认用myisam
> -DWITH_EXTRA_CHARSETS=all \  #扩展字符集
> -DDEFAULT_CHARSET=utf8mb4 \  #指定默认字符集
> -DDEFAULT_COLLATION=utf8mb4_unicode_ci \  #指定默认校验字符集
> -DWITH_BOOST=/root/mysql-5.7.44/boost/boost_1_59_0/  #指定c++库依赖

在这里插入图片描述
在这里插入图片描述

  • 安装libtirpc-devel
[root@mysql-node1 ~]# yum install libtirpc-devel-0.2.4-0.16.el7.x86_64.rpm -y
  • 继续检测
[root@mysql-node1 mysql-5.7.44]# rm -rf CMakeCache.txt    [root@mysql-node1 mysql-5.7.44]# cmake \
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \  #指定安装路径
> -DMYSQL_DATADIR=/data/mysql \  #指定数据目录
> -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \  #指定套接字文件
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \  #指定启用INNODB存储引擎,默认用myisam
> -DWITH_EXTRA_CHARSETS=all \  #扩展字符集
> -DDEFAULT_CHARSET=utf8mb4 \  #指定默认字符集
> -DDEFAULT_COLLATION=utf8mb4_unicode_ci \  #指定默认校验字符集
> -DWITH_BOOST=/root/mysql-5.7.44/boost/boost_1_59_0/  #指定c++库依赖

在这里插入图片描述

make编译

  • 检测完毕后,make开始编译编译时间较长
  • CMakeCache.txt会记录编译过程,所以即使编译中断,也可以使用make重新进行编译编译会跟着之前的编译继续编译
#检测完毕后,make开始编译,编译时间较长
[root@mysql-node1 mysql-5.7.44]# make -j2
#-j2 表示有几个核心就跑几个进程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

make install安装

  • 安装时间较短
[root@mysql-node1 mysql-5.7.44]# make install

部署

  • 修改配置文件
[root@mysql-node1 ~]# vim /etc/my.cnf
[root@mysql-node1 ~]# cat /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
symbolic-links=0
  • 创建用户(如果不建立用户后面初始化的时候会报错
#-M:不创建用户的主目录
[root@mysql-node1 ~]# useradd -s /sbin/nologin -M mysql
  • 创建datadir目录,并修改目录所属者所属组
[root@mysql-node1 ~]# mkdir -p /data/mysql/[root@mysql-node1 ~]# chown mysql:mysql /data/ -R
  • 添加mysql命令环境变量
#进入到安装目录
[root@mysql-node1 ~]# cd /usr/local/mysql/
[root@mysql-node1 mysql]# ls -F
bin/   include/  LICENSE  mysql-test/  README-test  support-files/
docs/  lib/      man/     README       share/#添加环境变量
[root@mysql-node1 mysql]# vim ~/.bash_profile

在这里插入图片描述

[root@mysql-node1 mysql]# source ~/.bash_profile
  • 生成启动脚本
[root@mysql-node1 ~]# cd /usr/local/mysql/support-files/
[root@mysql-node1 support-files]# ls
magic  mysqld_multi.server  mysql-log-rotate  mysql.server
[root@mysql-node1 support-files]# cp mysql.server /etc/init.d/mysqld
  • 初始化
[root@mysql-node1 ~]# mysqld --user mysql --initialize

在这里插入图片描述

#初始化后,生成一系列文件
[root@mysql-node1 ~]# ll /data/mysql/
总用量 110660
-rw-r-----. 1 mysql mysql       56 1130 22:15 auto.cnf
-rw-------. 1 mysql mysql     1680 1130 22:15 ca-key.pem
-rw-r--r--. 1 mysql mysql     1112 1130 22:15 ca.pem
-rw-r--r--. 1 mysql mysql     1112 1130 22:15 client-cert.pem
-rw-------. 1 mysql mysql     1680 1130 22:15 client-key.pem
-rw-r-----. 1 mysql mysql      436 1130 22:15 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 1130 22:15 ibdata1
-rw-r-----. 1 mysql mysql 50331648 1130 22:15 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 1130 22:15 ib_logfile1
drwxr-x---. 2 mysql mysql     4096 1130 22:15 mysql
drwxr-x---. 2 mysql mysql     8192 1130 22:15 performance_schema
-rw-------. 1 mysql mysql     1680 1130 22:15 private_key.pem
-rw-r--r--. 1 mysql mysql      452 1130 22:15 public_key.pem
-rw-r--r--. 1 mysql mysql     1112 1130 22:15 server-cert.pem
-rw-------. 1 mysql mysql     1680 1130 22:15 server-key.pem
drwxr-x---. 2 mysql mysql     8192 1130 22:15 sys
  • 如果忘记密码,可以删掉文件重新进行初始化
[root@mysql-node1 ~]# rm -rf /data/mysql/*
[root@mysql-node1 ~]# ll /data/mysql/
总用量 0
[root@mysql-node1 ~]# mysqld --user mysql --initialize

在这里插入图片描述

  • 启动mysql
[root@mysql-node1 ~]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/data/mysql/mysql-node1.err'.SUCCESS!
  • 设置mysql开机自启动企业6系统常用)
[root@mysql-node1 ~]# yum install chkconfig -y
[root@mysql-node1 ~]# chkconfig mysqld on  #chkconfig命令将mysqld服务设置为在所有或指定的运行级别下自动启动
[root@mysql-node1 ~]# chkconfig --list注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。要列出 systemd 服务,请执行 'systemctl list-unit-files'。查看在具体 target 启用的服务请执行'systemctl list-dependencies [target]'。mysqld          0:关    1:关    2:开    3:开    4:开    5:开    6:关
netconsole      0:关    1:关    2:关    3:关    4:关    5:关    6:关
network         0:关    1:关    2:开    3:开    4:开    5:开    6:关
rhnsd           0:关    1:关    2:开    3:开    4:开    5:开    6:关
  • 进入mysql
[root@mysql-node1 ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.44Copyright (c) 2000, 2023, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
#这里需要修改MySQL的密码,否则使用不了MySQL
mysql> alter user root@localhost identified by "123456";
Query OK, 0 rows affected (0.00 sec)mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)mysql>

至此,编译成功

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

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

相关文章

【Canvas与化学】枣红实心球钙元素图标

【成图】 120*120 大小图 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>钙元素图标 Draft2</title><style type&qu…

YOLOv8实战无人机视角目标检测

本文采用YOLOv8作为核心算法框架&#xff0c;结合PyQt5构建用户界面&#xff0c;使用Python3进行开发。YOLOv8以其高效的实时检测能力&#xff0c;在多个目标检测任务中展现出卓越性能。本研究针对无人机目标数据集进行训练和优化&#xff0c;该数据集包含丰富的无人机目标图像…

C#里怎么样使用new修饰符来让类智能选择基类函数还是派生类函数?

C#里怎么样使用new修饰符来让类智能选择基类函数还是派生类函数&#xff1f; 在C#里有一个特殊的用法&#xff0c;就是在创建与基类相同的函数时&#xff0c; 如果使用一个new修饰符&#xff0c;就会导致它会根据变量的类型而选择不同的函数运行。 这是一个比较特殊的使用方法&…

私有库gitea安装

一 gitea是什么 Gitea是一款自助Git服务&#xff0c;简单来说&#xff0c;就是可以一个私有的github。 搭建很容易。 Gitea依赖于Git。 类似Gitea的还有GitHub、Gitee、GitLab等。 以下是安装步骤。 二 安装sqilite 参考&#xff1a; 在windows上安装sqlite 三 安装git…

netconf 代码架构

NETCONF&#xff08;Network Configuration Protocol&#xff09;是一种基于 XML 的网络配置管理协议&#xff0c;主要用于在网络设备之间进行配置管理、状态监控和操作。它被设计为一种可扩展的协议&#xff0c;并且在自动化网络管理中扮演着重要角色。NETCONF 通过安全的通信…

【Anaconda】 创建环境报错:CondaHTTPError: HTTP 000 CONNECTION FAILED for url

问题描述 使用 Anaconda 创建环境时报错&#xff1a; CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://repo.anaconda.com/pkgs/free/noarch/repodata.json.bz2> Elapsed: -An HTTP error occurred when trying to retrieve this URL. HTTP errors are o…

十一、快速入门go语言之接口和反射

文章目录 接口:one: 接口基础:two: 接口类型断言和空接口:star2: 空接口实现存储不同数据类型的切片/数组:star2: 复制切片到空接口切片:star2: 类型断言 反射 &#x1f4c5; 2024年5月9日 &#x1f4e6; 使用版本为1.21.5 接口 十、Java类的封装和继承、多态 - 七点半的菜市…

计算机的错误计算(一百七十)

摘要 回复一中学生来信&#xff0c;探讨 MATLAB 关于算式 的计算问题。 在计算机的错误计算&#xff08;一百三十二&#xff09;中&#xff0c;我们探讨了手持式计算器关于算式 的计算问题。一中学生来信询问该算式在数学软件中是否会出错。 例1. 在 MATLAB 中计算 . 首…

Maven CMD命令

打包测试命令 在当前文件中 >mvn clean package -D maven.test.skiptrue 基本命令 mvn clean 清理目标目录&#xff08;target&#xff09;中的输出文件。 mvn compile 编译主源代码路径&#xff08;src/main/java&#xff09;下的 Java 代码。 mvn test-compile 编译测试源…

redis升级

服务器原来使用yum安装的。可以参考下面文章 Linux---Redis安装以及配置_yum安装redis-CSDN博客 yum安装的redis版本比较旧&#xff0c;我们直接下载源码编译安装。 我们下载已经发布的版本 Releases redis/redis GitHub 1、解压 2、make 3、make install 4、修改red…

【科研】9如何高效阅读和理解学术论文

【科研】9如何高效阅读和理解学术论文 写在最前面一、为什么需要系统的阅读方法&#xff1f;二、阅读论文的11步方法三、实践示例四、常见问题解答五、结语 &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每日百字篆刻时光&#xff0c;感谢你的陪伴与支持 ~ …

iptables 用于设置、维护和检查 IP 数据包的过滤规则。其基本用法是通过命令行界面配置流量的过滤策略,分为以下几类规则链:INPUT(入站流量)、OU

iptables 是 Linux 下的一个强大的防火墙工具&#xff0c;用于设置、维护和检查 IP 数据包的过滤规则。其基本用法是通过命令行界面配置流量的过滤策略&#xff0c;分为以下几类规则链&#xff1a;INPUT&#xff08;入站流量&#xff09;、OUTPUT&#xff08;出站流量&#xff…

CSS中flex:1时overflow失效

现象&#xff1a; 当连续多层标签使用了flex:1或者height:100%之后&#xff0c;最后一层设置overflow: auto失效 解决办法&#xff1a; 给上面设置了flex:1或者height:100%的标签都添加上overflow: auto

RabbitMQ在手动消费的模式下设置失败重新投递策略

最近在写RabbitMQ的消费者&#xff0c;因为业务需求&#xff0c;希望失败后重试一定次数&#xff0c;超过之后就不处理了&#xff0c;或者放入死信队列。我这里就达到重试次数后就不处理了。本来以为很简单的&#xff0c;问了kimi&#xff0c;按它的方法配置之后&#xff0c;发…

计算机毕业设计Python+卷积神经网络股票预测系统 股票推荐系统 股票可视化 股票数据分析 量化交易系统 股票爬虫 股票K线图 大数据毕业设计 AI

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

《我的世界之武艺时代》——第2话

观众朋友们&#xff0c;大家好&#xff01;欢迎来到《我的世界之武艺时代》的精彩世界。在开始这段奇幻旅程之前&#xff0c;请您花几秒钟的时间为我们的作品点个赞&#xff0c;并将其收藏到您的书架中。这不仅是对我们创作者的最大支持&#xff0c;也是让更多人发现这部作品的…

Linux下的wlan0控制

WIFI常用的两种模式&#xff1a;STA / AP 1. STA模式&#xff1a;客户端 嵌入式的系统下常常要手动配置wifi&#xff0c;和IP地址才能开始上网&#xff0c;关于STA模式下&#xff0c;常用的wifi配置工具有wpa_supplicant和轻量级的udhcpc客户端。 1.1wpa_supplicant 最小配置…

如何将 GitHub 私有仓库(private)转换为公共仓库(public)

文章目录 如何将 GitHub 私有仓库转换为公共仓库步骤 1: 登录 GitHub步骤 2: 导航到目标仓库步骤 3: 访问仓库设置步骤 4: 更改仓库可见性步骤 5: 确认更改步骤 6: 验证更改注意事项 如何将 GitHub 私有仓库转换为公共仓库 在软件开发领域&#xff0c;GitHub 是一个广受欢迎的…

RPA:电商订单处理自动化

哈喽&#xff0c;大家好&#xff0c;我是若木&#xff0c;最近闲暇时间较多&#xff0c;于是便跟着教程做了一个及RPA&#xff0c;谈到这个&#xff0c;可能很多人并不是很了解&#xff0c;但是实际上&#xff0c;这玩意却遍布文末生活的边边角角。话不多说&#xff0c;我直接上…

oracle中删除指定前缀的表

近期接手做的项目&#xff0c;发觉数据库中有许多多余的表。究其原因&#xff0c;应该是同事贪图方便&#xff0c;将过去做过的项目复制粘贴&#xff0c;然后修修改改。包括数据库也是克隆过来的&#xff0c;然后又没有删除本项目多余的表&#xff0c;结果经过几个轮回&#xf…