ubuntu 安装 MySql5.7(基于ARM架构 源码安装)

1 系统需求

目标安装MySql5.7版本。

系统环境:

oracle云主机,arm架构

确认主机架构如下图:

查看是否有5.7版本的源

apt-cache search mysql | grep mysql-server

执行后发现只有8.0版本的,5.7版本只能通过源码安装了。 

2 下载MySql源码

下载源码要选择合适的版本,官网下载地址:

MySQL :: Download MySQL Community Server (Archived Versions)

 

上面图片两种不同类型的压缩包选项:“Compressed TAR Archive, Includes Boost Headers” 和 “Compressed TAR Archive”。

  • Compressed TAR Archive, Includes Boost Headers:这个版本的源码包包含了构建MySQL所需的所有文件,包括Boost库的头文件。Boost是一个非常流行的C++库集合,提供了一系列高质量的软件库,用于处理如容器、算法、线程等任务。MySQL的某些部分依赖于Boost库来实现特定的功能。如果你从零开始编译MySQL,并且不想单独安装或配置Boost库,那么选择这个版本会更方便。
  • Compressed TAR Archive:这个版本只包含MySQL本身的源代码,没有额外的依赖库文件(比如Boost)。如果你已经有一个现成的开发环境,其中包含了所有必要的依赖项,或者你有特殊的需求想要自己管理这些依赖关系,那么可以选择这个较小的包。

对于大多数开发者来说,特别是那些刚开始编译MySQL或不确定自己环境中是否已正确设置所有必要依赖的人来说,推荐下载“Compressed TAR Archive, Includes Boost Headers”。这样可以避免因为缺少Boost库而导致编译失败的问题。

根据以下选择最终下载链接:https://cdn.mysql.com/archives/mysql-5.7/mysql-boost-5.7.44.tar.gz 

直接在linux下载 

wget https://cdn.mysql.com/archives/mysql-5.7/mysql-boost-5.7.44.tar.gz

包不是很大,很快就下载完成,如下图: 

3 编译MySQl源码

在源码编译前需要安装一些依赖:

sudo apt update
sudo apt install cmake build-essential libncurses5-dev libaio-dev libssl-dev libedit-dev libreadline-dev zlib1g-dev libcurl4-openssl-dev libevent-dev libgoogle-perftools-dev libjemalloc-dev

解压

tar -xzf mysql-boost-5.7.44.tar.gz

 进入解压后的目录,创建编译目录

mkdir build
cd build

 配置编译参数

cmake .. \-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \-DWITH_BOOST=boost \-DWITH_SSL=yes \-DWITH_ZLIB=bundled \-DWITH_EDITLINE=bundled \-DWITH_CURL=yes \-DWITH_JEMALLOC=bundled \-DWITH_SYSTEMD=1 \-DCMAKE_C_FLAGS="-march=armv8-a" \-DCMAKE_CXX_FLAGS="-march=armv8-a"

解释:

  • -DCMAKE_INSTALL_PREFIX=/usr/local/mysql:指定 MySQL 安装目录。
  • -DWITH_BOOST=boost:指定 Boost 库的位置,如果源码包中包含 Boost 头文件,使用 boost。
  • -DCMAKE_C_FLAGS="-march=armv8-a" 和 -DCMAKE_CXX_FLAGS="-march=armv8-a":指定编译器优化选项,确保针对 ARM64 架构进行优化。 

编译源码:
使用 make 命令编译源码。这一步可能需要一些时间,具体取决于你的系统性能:

make

编译过程,漫长的等待……,如下图: 

编译完成如下图: 

oracle的云主机 4核 (cpu 3.0 GHz Ampere® Altra™)+24g内存 编译花了2个小时。

4 安装mysql

 编译完成开始,安装mysql

sudo make install

 安装完成如下图:

5 初始化数据库

创建 MySQL 用户和组,创建一个专用的 MySQL 用户和组:

sudo groupadd mysql
sudo useradd -r -g mysql mysql


初始化数据目录,初始化 MySQL 数据目录:

cd /usr/local/mysql
sudo bin/mysqld --initialize --user=mysql


设置权限,设置 MySQL 目录的权限:

sudo chown -R mysql:mysql /usr/local/mysql
sudo chown -R mysql:mysql /usr/local/mysql/data



 

创建Mysql配置文件,在/etc/目录下创建my.cnf并保存,配置文件内容如下:

[mysqld]
# 基本配置
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
socket = /tmp/mysql.sock
port = 3306
pid-file = /usr/local/mysql/data/mysqld.pid# 日志配置
log-error = /usr/local/mysql/data/error.log
slow-query-log = 1
slow-query-log-file = /usr/local/mysql/data/slow-query.log# InnoDB 配置
innodb_data_home_dir = /usr/local/mysql/data
innodb_log_group_home_dir = /usr/local/mysql/data
innodb_buffer_pool_size = 8024M
innodb_log_file_size = 100M
innodb_flush_log_at_trx_commit = 1
innodb_file_per_table = 1# 其他配置
max_connections = 151
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
key_buffer_size = 16M#bind-address = 0.0.0.0

6 启动 MySQL 服务

创建 systemd 服务文件:
如果你使用的是 systemd 系统,可以创建一个 systemd 服务文件来管理 MySQL 服务。创建文件 /etc/systemd/system/mysqld.service,内容如下:

[Unit]
Description=MySQL Server
After=network.target[Service]
User=mysql
Group=mysql
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill -SIGINT $MAINPID
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/mysqld.pid[Install]
WantedBy=multi-user.target

服务配置文件的解释:

[Unit] 部分

Description

  • 这行Description = MySQL Server是对该服务单元的一个简单描述,说明此服务是 MySQL 服务器。它主要用于在系统日志、管理工具等地方显示一个人类可读的服务名称。

After

  • After = network.target表示该服务应该在network.target之后启动。这是因为 MySQL 服务器需要网络服务就绪后才能正常运行。network.target代表网络初始化完成的一个系统目标,确保 MySQL 在网络环境准备好之后启动,避免因网络未就绪而出现启动失败等问题。

[Service] 部分

User 和 Group

  • User = mysqlGroup = mysql指定了运行 MySQL 服务的用户和用户组。使用专门的mysql用户和组来运行服务,可以提高系统安全性,避免 MySQL 以特权用户(如root)运行可能带来的安全风险。

ExecReload

  • ExecReload = /bin/kill -HUP $MAINPID定义了如何重新加载服务配置。这里通过向主进程($MAINPID)发送HUP(挂起信号)来实现重新加载配置的操作。当系统管理员执行systemctl reload mysql命令时,会执行此操作,让 MySQL 重新读取配置文件而无需完全重启服务。

ExecStop

  • ExecStop = /bin/kill -SIGINT $MAINPID指定了如何停止服务。当执行systemctl stop mysql命令时,会向主进程发送SIGINT(中断信号)来正常停止 MySQL 服务,确保服务能够有序地关闭,避免数据丢失或损坏等问题。

ExecStart

  • ExecStart = /usr/local/mysql/bin/mysqld --defaults - file = /etc/my.cnf --basedir = /usr/local/mysql --datadir = /usr/local/mysql/data --pid - file = /usr/local/mysql/data/mysqld.pid定义了如何启动 MySQL 服务。
    • --defaults - file = /etc/my.cnf指定了 MySQL 的配置文件路径,MySQL 在启动时会读取此文件中的配置参数。
    • --basedir = /usr/local/mysql指定了 MySQL 的安装基础目录。
    • --datadir = /usr/local/mysql/data指定了 MySQL 的数据存储目录,数据库文件、表数据等都存储在此目录中。
    • --pid - file = /usr/local/mysql/data/mysqld.pid指定了 MySQL 服务主进程的 PID 文件存储位置,通过此 PID 文件可以方便地对服务进程进行管理。

[Install] 部分

  • WantedBy = multi - user.target表示该服务希望在multi - user.target被激活时自动启动。multi - user.target是系统启动到多用户模式时的一个目标,意味着当系统进入多用户模式时,MySQL 服务将自动启动,确保在正常的多用户使用环境下 MySQL 能够正常运行。

如下图: 

启动 MySQL 服务,加载新的服务文件并启动 MySQL 服务:

sudo systemctl daemon-reload
sudo systemctl start mysqld
sudo systemctl enable mysqld

 查看mysql服务状态启动成功运行正常,如下图: 

 

7 mysql账号管理

登录 MySQL,使用初始密码(初始化时生成的密码)登录 MySQL:

/usr/local/mysql/bin/mysql -u root -p

登陆后操作,首次登陆要求修改密码如下图: 


修改初始密码:
登录后,建议立即修改初始密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_password';

增加远程访问用户

CREATE USER 'root'@'%' IDENTIFIED BY 'xxxxxxxx';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

 远程验证登陆成功,如下图:

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

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

相关文章

MATLAB边缘检测

一、目的: 熟悉边缘检测原理,并运用matlab软件实现图像的canny边缘检测,体会canny边缘检测的优缺点。 二、内容: 编写matlab程序,实现对lena图像的边缘检测,输出程序运行结果。 三、原理或步骤&#x…

多线程(七):单例模式指令重排序

目录 1. 单例模式 1.1 饿汉模式 1.2 懒汉模式 2. 懒汉模式下的问题 2.1 线程安全问题 2.2 如何解决 --- 加锁 2.3 加锁引入的新问题 --- 性能问题 2.4 指令重排序问题 2.4.1 指令重排序 2.4.2 指令重排序引发的问题 1. 单例模式 单例模式, 是设计模式中最典型的一种模…

VMware:Windows主机与CentOS虚拟机文件互传文件共享

注意:本文使用Win10与VMware17pro互传 1. 本地创建文件夹 如下图创建一个文件夹,名字任意 2. 设置本地文件夹权限 右键文件夹 - - 属性 - - 共享 - - 高级共享 - - 权限 - - 如下图全部勾选 - - 应用 - - 确认 3. VMware中设置共享文件夹路径 第一步…

使用Three.js和Force-Directed Graph实现3D知识图谱可视化

先看样式: 在当今信息爆炸的时代,如何有效地组织和展示复杂的知识结构成为一个重要的挑战。3D知识图谱可视化是一种直观、交互性强的方式来呈现知识之间的关系。本文将详细介绍如何使用HTML、JavaScript、Three.js和Force-Directed Graph库来实现一个交互…

【动态规划】【路径问题】下降路经最小和、最小路径和、地下城游戏

4. 下降路径最小和 931. 下降路径最小和 算法原理 确定状态表示 dp[i][j] 表示:到达 [i, j] 位置,最小的下降路径 状态转移方程 dp[i][j] 从 [i-1, j-1] 到达 [i, j] > dp[i-1][j-1] m[i][j]从 [i-1, j] 到达 [i, j] > dp[i-1][j] m[i][j]从 …

已解决:ModuleNotFoundError: No module named ‘pip‘

[已解决] ModuleNotFoundError: No module named ‘pip‘ 文章目录 写在前面问题描述报错原因分析 解决思路解决办法1. 手动安装或升级 pip2. 使用 get-pip.py 脚本3. 检查环境变量配置4. 重新安装 Python 并确保添加到 PATH5. 在虚拟环境中安装 pip6. 使用 conda 安装 pip&…

智简魔方业务管理系统v10 好用的IDC业务管理软件

智简魔方业务管理系统v10,您一直在寻找的IDC业务管理软件,基于PHPMYSQL开发的一套小型易于部署的业务管理核心,具有极强的扩展能力,非常方便的安装方式,用户可在5分钟内部署属于自己的业务管理系统,ZJMF-CB…

路由表来源(基于华为模拟器eNSP)

概叙 在交换网络中,若要实现不同网段之间的通信,需要依靠三层设备(路由器、三层交换机等),而路由器只知道其直连网段的路由条目,对于非直连的网段,在默认情况下,路由器是不可达的&a…

Goland 搭建Gin脚手架

一、使用编辑器goland 搭建gin 打开编辑器 新建项目后 点击 create 二、获得Gin框架的代码 命令行安装 go get -u github.com/gin-gonic/gin 如果安装不上,配置一下环境 下载完成 官网git上下载 这样就下载完成了。、 不过这种方法需要设置一下GOPATH 然后再执…

【An】Animate 2024 for【Mac】 An动画设计制作软件 安装教程——保姆级教程

Mac分享吧 文章目录 【An】Animate 2024 Mac版 An动画设计制作软件 安装完成,打开效果Mac电脑【An】Animate 2024 动画设计制作软件——v24.0.4⚠️注意事项:1️⃣:下载软件2️⃣:安装AntiCC组件,步骤见文章或下图3️…

springboot+uinapp基于Android的固定资产借用管理平台

文章目录 前言项目介绍技术介绍功能介绍核心代码数据库参考 系统效果图论文效果图 前言 文章底部名片,获取项目的完整演示视频,免费解答技术疑问 项目介绍 固定资产借用管理平台设计的目的是为用户提供使用申请、故障报修、设备归还、意见反馈等管理方…

嘉立创EDA个人学习笔记2(绘制51单片机核心板)

前言 本篇文章属于嘉立创EDA的学习笔记,来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记,只能做参考,细节方面建议观看视频,肯定受益匪浅。 【教程】零基础入门PCB设计-国一学长带你学立创EDA专业版 全程保姆…

新手入门之Spring Bean

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、初识SpringBootSpringBoot 的主要特点1、自动配置:2、外部化配置:3、嵌入式服务器支持:4、启动器依赖(Start…

大数据新视界 --大数据大厂之数据脱敏技术在大数据中的应用与挑战

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

R语言机器学习算法实战系列(十)自适应提升分类算法 (Adaptive Boosting)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍原理步骤教程下载数据加载R包导入数据数据预处理数据描述数据切割调节参数构建模型预测测试数据评估模型模型准确性混淆矩阵模型评估指标ROC CurvePRC Curve特征的重要性保存模型总…

【图解版】力扣第162题:寻找峰值

注意 题目只要求找到一个峰值就可以了。nums[-1]和nums[n]这两个位置是负无穷,也就是说,除了数组的位置之外,其它地方都是负无穷。对于所有有效的 i 都有 nums[i] ! nums[i 1] 方法一 遍历整个数组,找到最高的那个点。时间复杂…

大数据治理:数据时代的挑战与应对

目录 大数据治理:数据时代的挑战与应对 一、大数据治理的概念与内涵 二、大数据治理的重要性 1. 提高数据质量与可用性 2. 确保数据安全与合规 3. 支持数据驱动的决策 4. 提高业务效率与竞争力 三、大数据治理的实施策略 1. 建立健全的数据治理框架 2. 数…

C++STL--------list

文章目录 一、list链表的使用1、迭代器2、头插、头删3、insert任意位置插入4、erase任意位置删除5、push_back 和 pop_back()6、emplace_back尾插7、swap交换链表8、reverse逆置9、merge归并10、unique去重11、remove删除指定的值12、splice把一个链表的结点转移个另一个链表13…

Java入门4——输入输出+实用的函数

在本篇博客,采用代码解释的方法,帮助大家熟悉Java的语法 一、输入和输出 在Java当中,我们一般有这样输入输出: import java.util.Scanner;public class javaSchool {public static void main(String[] args) {Scanner scanner …

【配色网站分享】

个人比较喜欢收藏一些好看的插画、UI设计图和配色,于是有了此篇,推荐一些配色网站,希望能对自己和大家有些帮助。 1.uiGradients 一个主打渐变风网站,还可以直接复制颜色。 左上角的“show all gradients”可以查看一些预设的渐…