当前位置: 首页 > news >正文

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>

至此,编译成功

复制编译文件别的主机上

  • 这里我们再将node1上编译好的文件复制node2主机
#在node2上创建用户并创建数据目录
[root@mysql-node2 ~]# useradd -s /sbin/nologin -M mysql
[root@mysql-node2 ~]# mkdir -p /data/mysql
[root@mysql-node2 ~]# chown mysql:mysql /data/ -R
#拷贝安装目录
[root@mysql-node1 ~]# rsync -a -r /usr/local/mysql root@172.25.254.20:/usr/local/
#拷贝配置文件
[root@mysql-node1 ~]# rsync /etc/my.cnf root@172.25.254.20:/etc/
  • 拷贝启动脚本
[root@mysql-node2 ~]# cd /usr/local/mysql/support-files/
[root@mysql-node2 support-files]# ls
magic  mysqld_multi.server  mysql-log-rotate  mysql.server
[root@mysql-node2 support-files]# cp mysql.server /etc/init.d/
  • 设置环境变量
[root@mysql-node2 support-files]# vim ~/.bash_profile

在这里插入图片描述

[root@mysql-node2 support-files]# source ~/.bash_profile
  • 初始化
[root@mysql-node2 ~]# mysqld --user mysql --initialize

在这里插入图片描述

  • 启动mysql
[root@mysql-node2 ~]# /etc/init.d/mysql.server start
Starting MySQL.Logging to '/data/mysql/mysql-node2.err'.SUCCESS!
  • 设置开机自启动
[root@mysql-node2 ~]# chkconfig mysql.server on
[root@mysql-node2 ~]# chkconfig --list注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。要列出 systemd 服务,请执行 'systemctl list-unit-files'。查看在具体 target 启用的服务请执行'systemctl list-dependencies [target]'。mysql.server    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-node2 ~]# mysql -uroot -p
Enter password:mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
#需要修改完密码才能使用
mysql> alter user root@localhost identified by "123456";
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

http://www.mrgr.cn/news/78708.html

相关文章:

  • Redis数据库主要数据结构类型
  • 解决 Tomcat 跨域问题 - Tomcat 配置静态文件和 Java Web 服务(Spring MVC Springboot)同时允许跨域
  • AngularJS HTML DOM
  • unity 播放 序列帧图片 动画
  • 【C++修炼之路】C++入门 探究根源的奥秘 下
  • 若要把普通表转成分区表,就需要先新建分区表,然后把普通表中的数据导入新建分区表。 具体怎么导入?
  • baomidou Mabatis plus引入异常
  • 【设计模式系列】解释器模式(十七)
  • 关于使用注册表修改键盘的键位映射
  • 阿里云服务器(centos7.6)部署前后端分离项目
  • 六:安装服务-compute node
  • 1-1 Gerrit实用指南
  • 【LeetCode刷题之路】120:三角形最小路径和的两种解法(动态规划优化)
  • 初识ProtoBuf以及环境搭建(Win和Ubuntu)
  • NGO-CNN-BiGRU-Attention北方苍鹰算法优化卷积双向门控循环单元时间序列预测,含优化前后对比
  • 你能穿过迷雾看清一切吗
  • uni-app 使用笔记
  • 【Oracle】个人收集整理的Oracle常用SQL及命令
  • BUGKU printf
  • otter 扩展
  • Ubuntu 24.04使用docker安装Node-Red
  • 【Ant Design Pro】1. config 配置
  • nginx搭建直播推流服务
  • arkTS:持久化储存UI状态的基本用法(PersistentStorage)
  • SRS搭建直播推流服务
  • vxlan 手工隧道(头端复制)