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

手把手教你用rpm在银河麒麟V10 ARM系统上安装MySQL 8.0.27(含完整命令)

在银河麒麟V10 ARM架构上部署MySQL 8.0.27:一份避坑指南与实战手册

最近在国产化替代的浪潮下,不少开发者和运维同学都开始接触银河麒麟这类国产操作系统。我手头正好有几台搭载飞腾或鲲鹏处理器的服务器,系统清一色是银河麒麟V10,需要在上面部署MySQL 8.0.27。本以为和CentOS上装MySQL大同小异,结果实际操作下来,从依赖包缺失到权限配置,踩的坑一个接一个。这篇文章,我就把自己从零开始、成功在银河麒麟V10 ARM系统上安装并配置好MySQL 8.0.27的完整过程,以及遇到的那些“坑”和解决方案,毫无保留地分享出来。无论你是初次接触国产操作系统,还是对Linux命令不太熟悉但任务在身,这份结合了原理和实操的指南,应该能帮你少走很多弯路。

1. 环境准备与前期“排雷”

在动手安装任何软件之前,理清环境状况是避免后续混乱的关键。银河麒麟V10基于Linux内核,其软件包管理继承了RPM体系,但它的软件源和依赖库与常见的CentOS或Ubuntu存在差异,尤其是在ARM架构下。

首先,我们需要确认两件事:系统架构现有数据库环境

打开终端,输入以下命令查看系统信息:

uname -m cat /etc/os-release

对于ARM架构的服务器,uname -m通常会返回aarch64。确认这一点至关重要,因为它决定了我们后续下载的安装包版本。

接下来,检查系统是否预装了其他数据库软件,比如MariaDB。在银河麒麟V10中,有时会存在与MySQL冲突的MariaDB组件。直接安装MySQL而不处理它们,百分百会报错。

我们可以用以下命令查询:

rpm -qa | grep -i mariadb rpm -qa | grep -i mysql

如果发现了MariaDB相关的包,比如mariadb-libs-5.5.64-1.el7.aarch64,必须将其移除。这里不建议使用yum removeapt remove,因为可能会触发复杂的依赖解析,甚至影响系统其他组件。更稳妥的方法是使用rpm -e(erase)命令进行强制卸载,并忽略依赖检查:

sudo rpm -e --nodeps mariadb-libs-5.5.64-1.el7.aarch64

注意:请将上面的包名替换为你实际查询到的名称。--nodeps参数意味着“不检查依赖”,这在此处是安全的,因为我们即将用MySQL完全替代其功能。

完成清理后,最好再更新一下系统基础软件包,确保环境稳定:

sudo yum update -y

2. 获取正确的MySQL安装包并解压

MySQL官方为不同架构和操作系统提供了编译好的RPM Bundle包。对于银河麒麟V10 ARM,我们需要找到对应aarch64架构和el7(Enterprise Linux 7)兼容版本的包。MySQL 8.0.27的版本号与发布编号需要仔细核对。

一个可靠的下载地址是MySQL官方的Archives站点。我们可以直接在服务器上使用wget命令下载。这里有一个小技巧:先在一个临时目录(如~/mysql_install)下进行操作,方便管理文件。

mkdir -p ~/mysql_install && cd ~/mysql_install wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.27-1.el7.aarch64.rpm-bundle.tar

下载完成后,你会得到一个tar压缩包。使用tar命令解压它:

tar xvf mysql-8.0.27-1.el7.aarch64.rpm-bundle.tar

解压后,你会看到一系列.rpm文件,它们共同组成了完整的MySQL。这些包必须按照特定的顺序安装,因为存在严格的依赖关系。错误的安装顺序会导致失败。

解压出来的文件列表通常如下,理解每个包的作用有助于在出问题时排查:

RPM 包名称核心功能描述
mysql-community-common包含MySQL服务器和客户端的公共文件,如配置文件、字符集定义等。
mysql-community-libs客户端库文件,是其他客户端工具的基础依赖。
mysql-community-libs-compat兼容旧版本客户端库,为了向后兼容。
mysql-community-client标准的MySQL客户端工具,如mysql,mysqldump
mysql-community-client-plugins客户端插件,例如用于SHA-256密码认证的插件。
mysql-community-serverMySQL服务器主程序,最核心的包。
mysql-community-devel开发用的头文件和库,用于编译连接MySQL的程序。
mysql-community-embedded-compat嵌入式MySQL库的兼容版本。

3. 按序安装RPM包与解决依赖冲突

现在进入核心安装环节。请严格按照下面的顺序执行rpm -ivh命令。-i表示安装,-v显示详细信息,-h显示进度条。由于我们是在一个“干净”的环境下安装,且已经处理了MariaDB,但为了应对银河麒麟系统库可能存在的微小差异,我们统一加上--nodeps(忽略依赖检查)和--force(强制安装)参数。

sudo rpm -ivh mysql-community-common-8.0.27-1.el7.aarch64.rpm --nodeps --force sudo rpm -ivh mysql-community-libs-8.0.27-1.el7.aarch64.rpm --nodeps --force sudo rpm -ivh mysql-community-libs-compat-8.0.27-1.el7.aarch64.rpm --nodeps --force sudo rpm -ivh mysql-community-client-8.0.27-1.el7.aarch64.rpm --nodeps --force sudo rpm -ivh mysql-community-client-plugins-8.0.27-1.el7.aarch64.rpm --nodeps --force sudo rpm -ivh mysql-community-server-8.0.27-1.el7.aarch64.rpm --nodeps --force # 以下两个包对于仅运行数据库服务而言不是必须的,可根据需要安装 sudo rpm -ivh mysql-community-devel-8.0.27-1.el7.aarch64.rpm --nodeps --force sudo rpm -ivh mysql-community-embedded-compat-8.0.27-1.el7.aarch64.rpm --nodeps --force

执行完上述命令后,MySQL的主要组件就已经安装到你的系统里了。可以通过rpm -qa | grep mysql来验证所有包是否都已存在。

第一个大坑:OpenSSL兼容库缺失在银河麒麟V10上,尝试初始化或启动MySQL服务时,你很可能会遇到一个经典错误:

mysqld: error while loading shared libraries: libssl.so.1.0.0: cannot open shared object file: No such file or directory

这是因为MySQL 8.0.27这个特定版本编译时链接了较旧版本的OpenSSL库(1.0.0),而银河麒麟V10系统自带的OpenSSL版本较新,不包含这个兼容库。解决方法是从其他兼容的源(如CentOS 8的镜像)下载对应的compat-openssl10包并安装。

wget http://mirror.centos.org/centos/8/AppStream/aarch64/os/Packages/compat-openssl10-1.0.2o-3.el8.aarch64.rpm sudo rpm -ivh compat-openssl10-1.0.2o-3.el8.aarch64.rpm

这个包提供了libssl.so.1.0.0libcrypto.so.1.0.0文件,完美解决了依赖问题。

4. 数据库初始化与安全加固

安装完所有包并解决了OpenSSL依赖后,我们开始初始化MySQL的数据目录。这是生成系统表、创建root用户初始密码的关键步骤。

使用mysqld --initialize命令进行初始化。这个命令会:

  • /var/lib/mysql目录下创建MySQL系统数据库(如mysql,sys,performance_schema)。
  • 为root用户生成一个临时的随机密码
sudo mysqld --initialize --user=mysql

重要提示:务必以root权限执行,并指定--user=mysql。执行成功后,一定要立即查看日志末尾,获取生成的root临时密码。密码记录在MySQL的错误日志中,默认位置是/var/log/mysqld.log

sudo grep 'temporary password' /var/log/mysqld.log

输出会类似:A temporary password is generated for root@localhost: JqkR7Eeio8>?。把JqkR7Eeio8>?这个密码复制保存下来,下一步登录要用。

第二个大坑:数据目录权限初始化完成后,启动服务前,必须确保/var/lib/mysql目录的所有权和权限正确。通常mysqld --initialize会处理好,但为了绝对可靠,我们可以手动设置:

sudo chown -R mysql:mysql /var/lib/mysql sudo chmod -R 750 /var/lib/mysql

我个人的经验是,在银河麒麟上,有时初始化后目录属主可能不对,导致后续mysqld进程没有写入权限而启动失败。所以这一步检查一下没坏处。

现在,可以启动MySQL服务了:

sudo systemctl start mysqld sudo systemctl enable mysqld # 设置开机自启 sudo systemctl status mysqld # 检查运行状态

看到active (running)就表示服务启动成功了。

5. 首次登录、修改密码与基础配置

服务启动后,用刚才记录的临时密码登录:

mysql -u root -p

输入临时密码。成功后,你会进入MySQL命令行提示符mysql>。但此时你几乎什么也做不了,因为MySQL强制要求你必须先修改root密码

在MySQL 8.0中,修改密码的语法与旧版本不同:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword123!';

请将'YourNewStrongPassword123!'替换为你自己的强密码。MySQL 8.0默认启用了密码强度验证插件,密码需要包含大小写字母、数字和特殊字符,且长度通常不少于8位。

修改成功后,执行FLUSH PRIVILEGES;(虽然ALTER USER通常会自动刷新),然后退出exit

基础安全配置建议:除了修改root密码,生产环境还应考虑:

  • 移除匿名用户:DELETE FROM mysql.user WHERE User='';
  • 禁止root远程登录(或使用强密码+SSL):CREATE USER 'admin'@'%' IDENTIFIED BY 'StrongPass!'; GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;然后DROP USER 'root'@'%';
  • 调整默认的my.cnf配置,如设置合适的字符集(utf8mb4)、调整连接数和缓冲区大小等。配置文件通常位于/etc/my.cnf/etc/mysql/my.cnf

6. 故障排查与性能调优初探

即使按照上述步骤,你可能还是会遇到一些问题。这里列举几个我遇到过的及其解决方法:

问题一:启动mysqld服务失败,日志显示“Permission denied”

检查SELinux状态。银河麒麟可能默认启用SELinux。临时关闭:sudo setenforce 0。永久关闭需编辑/etc/selinux/config,设置SELINUX=disabled,然后重启。更优解是配置正确的MySQL SELinux策略。

问题二:客户端无法连接,提示“Can‘t connect to local MySQL server through socket”

首先确认服务是否真的在运行:sudo systemctl status mysqld。其次,检查MySQL的socket文件路径。在MySQL命令行执行show variables like '%socket%';,确认客户端连接时使用的socket路径(--socket参数)与此一致。

问题三:内存占用过高在ARM服务器上,尤其是内存资源不那么充裕的情况下,需要对MySQL进行一些基础调优。编辑/etc/my.cnf,在[mysqld]段落下添加或修改以下参数:

[mysqld] # 基础调优示例,请根据服务器实际内存调整 innodb_buffer_pool_size = 256M # 对于1G内存的机器,设为256M是安全的起点 key_buffer_size = 32M max_connections = 50 # 控制并发连接数,避免过多连接耗尽资源 thread_cache_size = 8 query_cache_type = 0 # MySQL 8.0已移除查询缓存,此项无效,但可明确禁用 table_open_cache = 1024

修改配置后,重启服务生效:sudo systemctl restart mysqld

问题四:ARM架构下的性能考量ARM架构(如鲲鹏、飞腾)与x86架构在指令集和内存模型上有差异。虽然MySQL官方提供了ARM64的二进制包,但在极端高并发或复杂查询场景下,可能需要对一些编译参数或内核参数进行微调。不过,对于绝大多数应用场景,官方二进制包的默认配置已经足够稳定和高效。一个实用的建议是,关注操作系统层面的性能设置,如CPU调度器、透明大页(Transparent Huge Pages)等,这些对数据库性能的影响有时比数据库内部参数更直接。

整个安装和初步配置过程到这里就基本完成了。从清理环境、解决依赖、按序安装、处理权限、初始化、改密到基础调优,每一步都藏着可能让你折腾半天的小细节。尤其是在国产化平台上进行部署,更需要耐心和细致的排查。我自己的几台服务器在按照这个流程走通之后,MySQL 8.0.27都运行得非常稳定。如果你在操作中遇到了上面没提到的问题,多查看/var/log/mysqld.log这个日志文件,十有八九答案就在里面。

http://www.jsqmd.com/news/451943/

相关文章:

  • Proteus 8.0安装后找不到PRODEFS.INT?三步搞定路径重定向问题
  • Youtu-VL-4B-Instruct惊艳效果:同一张图返回‘3只猫’+边界框+姿态关键点三重结果
  • ChatGPT Prompt Builder 实战:如何用AI辅助开发提升提示词工程效率
  • StructBERT文本相似度模型实操手册:Prometheus+Grafana监控集成
  • WinForm 中依赖注入详解:从理论到项目实战
  • 2026年AI搜索优化平台专业选购指南与五大服务商深度解析 - 2026年企业推荐榜
  • VoxCPM-1.5-WEBUI开箱即用:免配置的文本转语音解决方案
  • Web开发环境一键搭建:Miniconda-Python3.10镜像实测体验
  • Janus-Pro-7B效果震撼:‘大师师父浣熊’街头风格生成高清细节图
  • MCP 2.0安全插件生态现状报告(覆盖217个主流插件),仅11.3%通过完整协议一致性测试——附权威认证下载通道与自动化安装审计工具
  • 如何打造专属翻译助手?轻小说翻译工具全攻略
  • 3个维度解决显示器色彩失真:专业人士都在用的校准方案
  • 深入C语言底层:为Z-Image-Turbo_Sugar脸部Lora编写高性能图像预处理库
  • 万象熔炉 | Anything XL部署教程:WSL2环境下Ubuntu 22.04完整配置
  • 3分钟搞定1000张图片!Umi-CUT让批量处理像拖放一样简单
  • GPT 5.4 震撼发布!
  • PAT 乙级 1121
  • Banana Vision Studio在医疗设备拆解中的应用:CT扫描仪结构分析
  • Flutter 三方库 fbdb 的鸿蒙化适配指南 - 掌控 FlatBuffers 存储资产、嵌入式实战、鸿蒙级精密数据库专家
  • 从麻将算法到特征提取:5个趣味案例带你掌握Python面试必考知识点
  • GLM-OCR开源镜像部署:离线环境pip依赖包打包与本地安装方案
  • REFramework:非侵入式修改的游戏引擎工具集
  • KrkrzExtract:下一代krkrz引擎解包工具的技术实现与应用指南
  • 零基础入门工业AI:用EagleEye镜像10分钟完成目标检测原型开发
  • 保障Lingbot-Depth-Pretrain-ViTL-14 API安全的网络安全配置实践
  • REFramework:游戏引擎增强与跨平台适配的非侵入式解决方案
  • 突破鸣潮帧率限制:WaveTools高帧率优化实战指南
  • Gemma-3-270m企业应用:为客服系统嵌入低延迟文本生成能力
  • Flutter 三方库 angel3_websocket 的鸿蒙化适配指南 - 掌控实时通信资产、精密 WebSocket 治理实战、鸿蒙级全连通专家
  • Mac用户必看:3分钟搞定Maven阿里云镜像配置(含.m2文件夹显示技巧)