0


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;

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

标签: ubuntu linux 运维

本文转载自: https://blog.csdn.net/qyhua/article/details/143064654
版权归原作者 qyhua 所有, 如有侵权,请联系我们删除。

“ubuntu 安装 MySql5.7(基于ARM架构 源码安装)”的评论:

还没有评论