news 2026/7/11 21:38:14

麒麟 V10 安装 Oracle MySQL 8.0.46 记录

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
麒麟 V10 安装 Oracle MySQL 8.0.46 记录

0. 为什么本次选择 MySQL 8.0

这次最终选择MySQL 8.0,主要不是因为版本越旧越好,而是因为它更适合当前这台麒麟 V10 虚拟机的实际运行环境。

原因如下:

  1. MySQL 8.0与当前系统环境兼容性更高

    • 当前系统在仓库识别上会落到el/10

    • 但系统实际运行库版本又没有达到MySQL 8.4 el10 RPM的依赖要求

    • 已实际出现缺少以下依赖的报错:

      • GLIBC_2.38

      • libssl.so.3

      • libcrypto.so.3

  2. MySQL 8.0提供了更适合当前环境的通用二进制包

    • 官方提供Linux Generic (glibc 2.17) (x86, 64-bit)安装包

    • 该包更适合麒麟 V10 这类兼容环境

    • 避开了 RPM 安装时对系统仓库和高版本运行库的强依赖

  3. MySQL 8.4在当前机器上通过仓库安装成本更高

    • 虽然8.4是 LTS 版本

    • 但在本次环境里,仓库安装已经实际出现依赖不满足

    • 如果继续坚持8.4 RPM路线,需要额外处理系统运行库兼容问题,复杂度明显更高

  4. 当前目标是先稳定安装成功并正常使用

    • 本次重点是让 MySQL 在麒麟 V10 上先稳定跑起来

    • MySQL 8.0.46已经能够完成安装,并且客户端版本已验证成功

    • 对当前学习、实验、开发和一般部署需求来说,8.0是更稳妥的选择

结论:

  • 如果当前环境不方便升级系统运行库,优先选择MySQL 8.0 Generic (glibc 2.17)二进制包

  • 如果后续操作系统环境升级、依赖满足,再考虑切换到MySQL 8.4 LTS

1. 适用场景

  • 系统:麒麟 V10

  • 架构:x86_64

  • 安装目标:Oracle MySQL Community Server 8.0.46

  • 安装方式:Linux Generic (glibc 2.17) x86_64二进制包安装

本文档整理了本次安装的正确步骤,以及安装过程中遇到的典型报错和处理方法。

2. 为什么最终选择二进制包安装

前期尝试过使用 MySQL 官方仓库安装,但在当前系统环境下遇到了两个问题:

  1. mysql80-community仓库地址落到了el/10,访问返回404

  2. 即使改为8.4仓库,安装时仍然缺少高版本运行库,例如:

    • GLIBC_2.38

    • libssl.so.3

    • libcrypto.so.3

因此最终确定:

  • 不再使用yum/dnf repo安装 MySQL 8.0

  • 改用 MySQL 官方通用二进制包安装

3. 正确下载的安装包

在 MySQL 官方下载页中应选择:

  • Select Version:8.0.46

  • Select Operating System:Linux - Generic

  • Select OS Version:Linux - Generic (glibc 2.17) (x86, 64-bit)

推荐下载的文件:

mysql-8.0.46-linux-glibc2.17-x86_64-minimal.tar.xz

说明:

  • minimal.tar.xz体积更小,适合当前安装

  • Test Suite相关文件不用下载

  • .tar.xz.tar更适合联网下载

4. 标准安装步骤

假设安装包已下载到桌面,路径可能为:

/root/Desktop/mysql-8.0.46-linux-glibc2.17-x86_64-minimal.tar.xz

或:

/root/桌面/mysql-8.0.46-linux-glibc2.17-x86_64-minimal.tar.xz

如果你的文件路径不同,请把下面命令中的路径改成实际路径。

4.1 清理旧残留

注意:以下命令会删除旧的 MySQL 安装目录、配置和数据目录。

systemctl stop mysqld 2>/dev/null systemctl disable mysqld 2>/dev/null rm -f /usr/lib/systemd/system/mysqld.service rm -f /etc/my.cnf rm -rf /usr/local/mysql rm -rf /usr/local/mysql-* rm -rf /data/mysql rm -rf /var/log/mysql rm -rf /tmp/mysql systemctl daemon-reload

4.2 安装依赖

dnf install -y libaio numactl-libs ncurses-compat-libs xz wget

4.3 创建 mysql 用户

id mysql || useradd -r -s /sbin/nologin mysql

4.4 解压安装包

如果安装包在中文桌面:

cd /usr/local tar -xf /root/桌面/mysql-8.0.46-linux-glibc2.17-x86_64-minimal.tar.xz

如果安装包在英文桌面:

cd /usr/local tar -xf /root/Desktop/mysql-8.0.46-linux-glibc2.17-x86_64-minimal.tar.xz

4.5 创建软链接

ln -s /usr/local/mysql-8.0.46-linux-glibc2.17-x86_64-minimal /usr/local/mysql

4.6 创建目录并授权

mkdir -p /data/mysql mkdir -p /data/mysql/tmp mkdir -p /var/log/mysql mkdir -p /var/run/mysql chown -R mysql:mysql /usr/local/mysql /usr/local/mysql-8.0.46-linux-glibc2.17-x86_64-minimal chown -R mysql:mysql /data/mysql /var/log/mysql /var/run/mysql chmod 750 /data/mysql chmod 755 /data/mysql/tmp /var/log/mysql /var/run/mysql

4.7 创建配置文件/etc/my.cnf

cat >/etc/my.cnf <<'EOF' [client] socket=/var/run/mysql/mysql.sock ​ [mysqld] basedir=/usr/local/mysql datadir=/data/mysql socket=/var/run/mysql/mysql.sock pid-file=/var/run/mysql/mysqld.pid log-error=/var/log/mysql/error.log tmpdir=/data/mysql/tmp port=3306 user=mysql character-set-server=utf8mb4 ​ [mysql] default-character-set=utf8mb4 EOF

4.8 初始化数据库

/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql

4.9 创建 systemd 服务文件

cat >/usr/lib/systemd/system/mysqld.service <<'EOF' [Unit] Description=MySQL Server After=network.target ​ [Service] Type=forking User=mysql Group=mysql ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --daemonize ExecStop=/usr/local/mysql/bin/mysqladmin --socket=/var/run/mysql/mysql.sock -uroot shutdown LimitNOFILE=5000 Restart=on-failure ​ [Install] WantedBy=multi-user.target EOF

4.10 启动服务

systemctl daemon-reload systemctl enable mysqld systemctl start mysqld systemctl status mysqld -l --no-pager

4.11 获取初始密码

grep 'temporary password' /var/log/mysql/error.log

4.12 登录 MySQL

/usr/local/mysql/bin/mysql -uroot -p -S /var/run/mysql/mysql.sock

4.13 修改 root 密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword@123!';

4.14 配置环境变量

echo 'export PATH=/usr/local/mysql/bin:$PATH' >/etc/profile.d/mysql.sh source /etc/profile.d/mysql.sh mysql --version

5. 安装成功的确认方法

5.1 确认客户端命令可用

mysql --version

正确示例:

mysql Ver 8.0.46 for Linux on x86_64 (MySQL Community Server - GPL)

5.2 确认服务已启动

systemctl status mysqld -l --no-pager

关键看是否包含:

Active: active (running)

5.3 确认 3306 端口监听

ss -lntp | grep 3306

5.4 确认能够登录

mysql -uroot -p -S /var/run/mysql/mysql.sock

登录后可以执行:

SELECT VERSION(); SHOW DATABASES;

5.5 确认开机自启

systemctl is-enabled mysqld

正确返回:

enabled

6. 本次安装过程中的错误记录与处理

6.1 启动失败:/tmp/mysql不存在

报错现象:

mysqld: Can't get stat of '/tmp/mysql' (OS errno 2 - No such file or directory)

原因:

  • socket

  • pid-file

  • tmpdir

这些路径依赖/tmp/mysql,但目录不存在。

处理方法:

mkdir -p /tmp/mysql chown -R mysql:mysql /tmp/mysql

并统一配置文件中的以下路径:

socket=/tmp/mysql/mysql.sock pid-file=/tmp/mysql/mysqld.pid tmpdir=/tmp/mysql

6.2 旧配置疑似存在路径手误

问题表现:

  • 出现过--tmpdir=/tmp/mql

  • ExecStart中参数疑似拼接错误

结论:

  • tmpdir应统一改为/tmp/mysql

  • 服务文件中的ExecStart参数要重新整理,避免路径连写错误

6.3 使用 MySQL 8.0 官方仓库时报 404

报错现象:

Errors during downloading metadata for repository 'mysql80-community' Status code: 404 for https://repo.mysql.com/yum/mysql-8.0-community/el/10/x86_64/repodata/repomd.xml

原因:

  • 系统仓库路径被解析到了el/10

  • 当前环境下mysql80-community对应的el/10仓库不可用

处理结论:

  • 不再使用该方式安装 MySQL 8.0

  • 改用官方通用二进制包安装

6.4mysqld.service不存在

报错现象:

Failed to enable unit: Unit file mysqld.service does not exist. Unit mysqld.service could not be found.

原因:

  • MySQL 包并没有通过仓库成功安装

  • 或服务文件已经被删除

处理方法:

  • 放弃失败的仓库安装方式

  • 采用二进制安装

  • 手工创建/usr/lib/systemd/system/mysqld.service

6.5mysql-community-server找不到

报错现象:

No match for argument: mysql-community-server Error: Unable to find a match: mysql-community-server

原因:

  • MySQL 仓库没有成功启用

  • /etc/yum.repos.d/mysql-community.repo未生成

处理结论:

  • 仓库方式不稳定

  • 最终切换为二进制安装方式

6.6 使用 8.4 仓库时缺少高版本运行库

报错现象:

nothing provides libc.so.6(GLIBC_2.38)(64bit) nothing provides libcrypto.so.3()(64bit) nothing provides libssl.so.3()(64bit)

原因:

  • 当前麒麟 V10 运行库版本低于el10下 MySQL 8.4 RPM 的依赖要求

处理结论:

  • 不适合继续使用el10的 RPM 方式安装 MySQL 8.4

  • 适合改用glibc2.17的 MySQL 8.0 Generic 二进制包

6.7 解压失败:安装包不在/root/

报错现象:

tar: /root/mysql-8.0.46-linux-glibc2.17-x86_64-minimal.tar.xz:无法 open: 没有那个文件或目录

原因:

  • 安装包实际下载到了桌面,不在/root/

处理方法:

  • 改用桌面真实路径解压

示例:

tar -xf /root/Desktop/mysql-8.0.46-linux-glibc2.17-x86_64-minimal.tar.xz

或:

tar -xf /root/桌面/mysql-8.0.46-linux-glibc2.17-x86_64-minimal.tar.xz

7. 本次安装最终结果

已确认出现过如下版本输出:

mysql Ver 8.0.46 for Linux on x86_64 (MySQL Community Server - GPL)

这说明:

  • MySQL 二进制程序已经正确安装

  • PATH环境变量已经配置生效

后续只需再确认:

  • mysqld服务是否处于active (running)

  • 是否可以通过root正常登录

  • 是否已完成 root 密码修改

8. 推荐的后续命令

systemctl status mysqld -l --no-pager systemctl is-enabled mysqld ss -lntp | grep 3306 mysql -uroot -p -S /tmp/mysql/mysql.sock

登录后可执行:

SELECT VERSION(); SHOW DATABASES;

9. 安装结果说明

本次安装过程中,已经确认出现如下版本输出:

mysql Ver 8.0.46 for Linux on x86_64 (MySQL Community Server - GPL)

这说明以下事项已经成立:

  • MySQL 客户端程序已经正确安装

  • /usr/local/mysql/bin已经可以正常使用

  • 环境变量已经生效,mysql命令可以直接调用

建议最终交付时至少保留以下验证结果截图或终端输出:

9.1 版本验证

mysql --version

9.2 服务状态验证

systemctl status mysqld -l --no-pager

9.3 端口监听验证

ss -lntp | grep 3306

9.4 登录验证

mysql -uroot -p -S /tmp/mysql/mysql.sock

9.5 数据库版本验证

SELECT VERSION();

如果上述命令都正常,则可判定:

  • MySQL 已安装成功

  • MySQL 服务已成功启动

  • 本地连接正常

  • 数据库已经具备可使用状态

10. 常用 MySQL 启停与运维命令

10.1 启动 MySQL

systemctl start mysqld

10.2 停止 MySQL

systemctl stop mysqld

10.3 重启 MySQL

systemctl restart mysqld

10.4 查看 MySQL 状态

systemctl status mysqld -l --no-pager

10.5 查看是否开机自启

systemctl is-enabled mysqld

10.6 设置开机自启

systemctl enable mysqld

10.7 取消开机自启

systemctl disable mysqld

10.8 查看错误日志

tail -n 100 /var/log/mysql/error.log

10.9 查看监听端口

ss -lntp | grep 3306

10.10 登录本地 MySQL

mysql -uroot -p -S /tmp/mysql/mysql.sock

10.11 查看数据库列表

SHOW DATABASES;

10.12 查看用户

SELECT user,host FROM mysql.user;

11. 开启远程连接与放行 3306

如果只做本机学习,可以不开放远程连接。 如果要让其他机器连接当前 MySQL,需要完成以下配置。

11.1 确认 MySQL 监听地址

先检查/etc/my.cnf是否存在以下配置:

bind-address=0.0.0.0

如果没有,可以在[mysqld]段中加入:

bind-address=0.0.0.0

修改后重启:

systemctl restart mysqld

11.2 创建远程登录用户

登录 MySQL:

mysql -uroot -p -S /tmp/mysql/mysql.sock

创建业务用户示例:

CREATE USER 'appuser'@'%' IDENTIFIED BY 'AppUser@123!'; GRANT ALL PRIVILEGES ON *.* TO 'appuser'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;

说明:

  • '%'表示允许任意主机连接

  • 如果你只想允许固定机器访问,可以把%改为指定 IP

例如只允许192.168.8.100访问:

CREATE USER 'appuser'@'192.168.8.100' IDENTIFIED BY 'AppUser@123!'; GRANT ALL PRIVILEGES ON *.* TO 'appuser'@'192.168.8.100' WITH GRANT OPTION; FLUSH PRIVILEGES;

11.3 放行防火墙 3306 端口

如果系统启用了firewalld,执行:

firewall-cmd --permanent --add-port=3306/tcp firewall-cmd --reload firewall-cmd --list-ports

11.4 验证远程连接

在其他机器上执行:

mysql -h 服务器IP -P 3306 -u appuser -p

如果连接失败,重点检查:

  • 服务是否启动

  • 3306 是否监听

  • 防火墙是否放行

  • 用户授权是否正确

  • 虚拟机网络模式是否允许访问

12. 创建数据库与业务用户示例

登录后可以按下面方式创建业务数据库:

CREATE DATABASE appdb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;

创建专用用户并只授权某个库:

CREATE USER 'appdb_user'@'%' IDENTIFIED BY 'AppDb@123!'; GRANT ALL PRIVILEGES ON appdb.* TO 'appdb_user'@'%'; FLUSH PRIVILEGES;

查看授权:

SHOW GRANTS FOR 'appdb_user'@'%';

13. 常见故障排查清单

13.1mysql命令找不到

处理方法:

echo 'export PATH=/usr/local/mysql/bin:$PATH' >/etc/profile.d/mysql.sh source /etc/profile.d/mysql.sh mysql --version

13.2mysqld.service不存在

处理方向:

  • 检查/usr/lib/systemd/system/mysqld.service是否创建成功

  • 重新执行systemctl daemon-reload

ls -l /usr/lib/systemd/system/mysqld.service systemctl daemon-reload systemctl start mysqld

13.3 服务启动失败

优先查看日志:

systemctl status mysqld -l --no-pager tail -n 100 /var/log/mysql/error.log

重点检查:

  • /tmp/mysql是否存在

  • /data/mysql权限是否正确

  • /etc/my.cnf是否写错路径

13.4 3306 没有监听

检查:

ss -lntp | grep 3306

如果没有输出,说明服务未正常监听,继续检查:

systemctl status mysqld -l --no-pager tail -n 100 /var/log/mysql/error.log

13.5 无法远程连接

依次检查:

  • bind-address是否允许外部访问

  • MySQL 用户是否授权给%或指定 IP

  • 防火墙是否已开放3306/tcp

  • 虚拟机使用的是 NAT、桥接还是仅主机模式

13.6 忘记 root 密码

本次文档不展开密码重置流程。 如后续需要,可单独补充“跳过授权表重置 root 密码”的操作文档。

14. 虚拟机网络模式提醒

如果你准备从宿主机或其他机器访问这台麒麟虚拟机,还需要关注 VMware 网络模式:

  • NAT:通常宿主机可以访问虚拟机,但其他外部机器访问受限

  • 桥接:虚拟机直接加入局域网,最适合做远程连接测试

  • 仅主机:通常只能宿主机和虚拟机互通

如果远程连接一直失败,除了 MySQL 配置本身,也要检查 VMware 网络模式是否符合你的访问目标。

15. 本文档结论

本次在麒麟 V10 上安装 Oracle MySQL 的最终可行方案为:

  • 选择MySQL Community Server 8.0.46

  • 下载Linux Generic (glibc 2.17) (x86, 64-bit)二进制包

  • 使用minimal.tar.xz安装包进行部署

  • 手工配置my.cnf、数据目录、日志目录和systemd服务

最终判断标准为:

  • mysql --version正常输出8.0.46

  • mysqld服务状态为active (running)

  • 3306端口正常监听

  • 可以正常登录并执行 SQL

16. 本次最终修复结果补充

在后续使用过程中,MySQL 曾再次出现无法启动的问题,核心报错为:

mysqld: Can't get stat of '/tmp/mysql' (OS errno 2 - No such file or directory)

16.1 问题原因

最初配置把以下文件都放在了/tmp/mysql

  • socket

  • pid-file

  • tmpdir

/tmp属于临时目录,系统重启后可能被清空,因此会导致:

  • mysqld.service启动失败

  • mysql.sock不存在

  • pid文件路径失效

16.2 临时修复方法

当时通过重新创建目录,可以临时恢复启动:

mkdir -p /tmp/mysql chown -R mysql:mysql /tmp/mysql chmod 755 /tmp/mysql systemctl start mysqld

16.3 最终长期修复方案

为了避免/tmp被清空后再次影响 MySQL,最终将配置调整为:

  • socket=/var/run/mysql/mysql.sock

  • pid-file=/var/run/mysql/mysqld.pid

  • tmpdir=/data/mysql/tmp

并创建稳定目录:

mkdir -p /var/run/mysql mkdir -p /data/mysql/tmp chown -R mysql:mysql /var/run/mysql /data/mysql/tmp chmod 755 /var/run/mysql /data/mysql/tmp

最终使用的/etc/my.cnf关键配置如下:

[client] socket=/var/run/mysql/mysql.sock ​ [mysqld] basedir=/usr/local/mysql datadir=/data/mysql socket=/var/run/mysql/mysql.sock pid-file=/var/run/mysql/mysqld.pid log-error=/var/log/mysql/error.log tmpdir=/data/mysql/tmp port=3306 user=mysql character-set-server=utf8mb4 ​ [mysql] default-character-set=utf8mb4

16.4 最终验证结果

本次最终已经验证成功:

  • systemctl status mysqld -l --no-pager显示active (running)

  • ss -lntp | grep 3306显示3306正常监听

  • mysql -uroot -p -S /var/run/mysql/mysql.sock可以正常登录

  • 登录后显示版本为MySQL Community Server - GPL 8.0.46

另外,33060端口同时监听属于正常现象,这是 MySQL 8 的X Plugin端口,不是异常问题。

16.5 最终建议

后续在本机环境中,统一使用下面的登录命令:

mysql -uroot -p -S /var/run/mysql/mysql.sock

后续如果再检查服务状态和端口,常用命令如下:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/11 21:38:00

当十万卡AI超集群遇上公共算力路线:创新门槛能否重新定价?

【导语&#xff1a;在全球科技公司纷纷建设大规模算力集群的背景下&#xff0c;算力组织方式正走向分化。曙光8000作为全国产十万卡AI超集群接入国家超算互联网&#xff0c;开启了公共算力路线的压力测试&#xff0c;其成果将影响创新格局。】算力组织的两种模式&#xff1a;护…

作者头像 李华
网站建设 2026/7/11 21:37:01

实现RAG系统的24小时极速原型:从Paper到可运行Demo的工程笔记

实现RAG系统的24小时极速原型&#xff1a;从Paper到可运行Demo的工程笔记 一、深度引言 2024年中&#xff0c;我们团队需要在一周内验证一个基于RAG的企业知识库问答方案。外部供应商的报价从20万到50万不等&#xff0c;交付周期是4-8周。对于一个还在验证商业模式阶段的团队来…

作者头像 李华
网站建设 2026/7/11 21:36:36

3分钟掌握Windows窗口大小强制调整:开源工具Window Resizer完全指南

3分钟掌握Windows窗口大小强制调整&#xff1a;开源工具Window Resizer完全指南 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 你是否曾为那些"顽固"的Windows窗口而烦…

作者头像 李华
网站建设 2026/7/11 21:36:31

Locust性能测试实战:从零构建高并发压测脚本与分布式部署

1. 项目概述&#xff1a;为什么是Locust&#xff1f; 如果你正在寻找一个能让你快速上手、用Python代码就能定义复杂压测场景的工具&#xff0c;Locust绝对值得你花时间研究。我最早接触它是在一个电商大促前的全链路压测项目里&#xff0c;当时团队需要一个能模拟真实用户购物…

作者头像 李华
网站建设 2026/7/11 21:35:39

电子工程师无网办公实操指南:本地部署电路专用AI

1. 项目概述&#xff1a;为什么电子工程师真需要“离线版Gemini”&#xff1f;在电子工程现场&#xff0c;你有没有经历过这些时刻&#xff1a;调试一块刚打样的PCB&#xff0c;示波器波形异常&#xff0c;想快速查一下某款LDO的典型启动时间与软启动电容计算公式&#xff0c;但…

作者头像 李华