银河麒麟 V10(x86_64)离线安装 MySQL 8.0

以下是银河麒麟 V10(x86_64)离线安装 MySQL 8.0 的完整、详细教程(基于 2026 年 2 月最新稳定版 MySQL 8.0.45)。

你的内核 4.19.90-24.4.v2101.ky10.x86_64 完全兼容 el7/el8 的 RPM 包,实际生产中 90% 的银河麒麟 V10 都用 el7 的 RPM Bundle 安装 MySQL 8.0。

1. 前提准备(必须在有网机器上完成)

  1. 下载 MySQL 8.0.45 RPM Bundle(推荐 el7 版,兼容性最好):
    • 官网地址:https://dev.mysql.com/downloads/mysql/8.0.html
    • 选择 Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86_64)RPM Bundle
    • 文件名:mysql-8.0.45-1.el7.x86_64.rpm-bundle.tar(约 1.2GB)
    • 同时下载 SHA256 校验文件(可选但强烈推荐)
  2. 常见系统依赖 RPM(如果安装时报缺少,提前下载这些):
    • 从银河麒麟官方源或镜像下载(搜索 "ky10" + 包名):
      • libaio-0.3.110-8.el8.x86_64.rpm
      • numactl-libs-2.0.12-1.el8.x86_64.rpm
      • ncurses-compat-libs-6.1-9.20180224.el8.x86_64.rpm(有时需要)
    • 把所有文件用 U 盘 / WinSCP / SCP 传到服务器的 /usr/local/src/mysql/ 目录。

麒麟依赖官方下载地址:https://update.cs2c.com.cn/NS/V10/V10SP3/os/adv/lic/base/x86_64/Packages/

完整安装包和依赖下载:夸克网盘

注:如果离线安装依赖无法安装,那就只能通过挂载ISO镜像处理,查看我之前发布的CSDN

挂载本地镜像源,里面包含大多数的基础依赖包,直接按照步骤挂载后,重新再安装一边即可。

2. 安装前清理(非常重要!)

银河麒麟 V10 默认预装 MariaDB,会冲突。

Bash

复制代码
# 查看已安装的 mysql/mariadb
rpm -qa | grep -E 'mysql|mariadb'

# 强制卸载(加 --nodeps 防止依赖报错)
rpm -e --nodeps mariadb-libs mariadb-common mariadb-server mysql-community* 2>/dev/null

# 删除残留目录和配置文件
rm -rf /var/lib/mysql /var/log/mysqld.log /etc/my.cnf /etc/my.cnf.d/

3. 安装 MySQL RPM(离线)

Bash

复制代码
cd /usr/local/src/mysql

# 解压 bundle
tar -xvf mysql-8.0.45-1.el7.x86_64.rpm-bundle.tar

# 按顺序安装(必须这个顺序!)
rpm -ivh mysql-community-common-8.0.45-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.45-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.45-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.45-1.el7.x86_64.rpm
rpm -ivh mysql-community-icu-data-files-8.0.45-1.el7.x86_64.rpm   # 可选
rpm -ivh mysql-community-server-8.0.45-1.el7.x86_64.rpm

如果报依赖缺失(例如 libaio):

Bash

复制代码
rpm -ivh libaio-*.rpm numactl-libs-*.rpm   # 先装依赖
# 再重新执行上面的 mysql rpm

4. 初始化 MySQL

Bash

复制代码
# 创建数据目录并授权
mkdir -p /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql
chmod -R 755 /var/lib/mysql

# 初始化(推荐 insecure 模式,省去临时密码步骤)
mysqld --initialize-insecure --user=mysql --basedir=/usr --datadir=/var/lib/mysql

# 或者标准初始化(会生成临时密码)
# mysqld --initialize --user=mysql

5. 配置 /etc/my.cnf(推荐生产配置)

Bash

复制代码
cat > /etc/my.cnf << EOF
[client]
port=3306
socket=/var/lib/mysql/mysql.sock
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
port=3306
socket=/var/lib/mysql/mysql.sock
datadir=/var/lib/mysql
user=mysql
bind-address=0.0.0.0
server-id=1
character-set-server=utf8mb4
collation-server=utf8mb4_0900_ai_ci
default_authentication_plugin=mysql_native_password
skip-name-resolve
max_connections=1000
max_connect_errors=100
innodb_buffer_pool_size=1G   # 根据服务器内存调整
innodb_log_file_size=256M
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
lower_case_table_names=1
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
EOF

6. 启动与开机自启

Bash

复制代码
# 启动
systemctl start mysqld

# 开机自启
systemctl enable mysqld

# 查看状态
systemctl status mysqld
ss -lntup | grep 3306

7. 首次登录与安全设置

Bash

复制代码
# 如果用了 --initialize-insecure,直接 root 无密码登录
mysql -uroot -p   # 直接回车

# 设置 root 密码(强烈推荐)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourStrongPassword123!';

# 允许远程登录(生产环境建议用专用账号)
CREATE USER 'root'@'%' IDENTIFIED BY 'YourStrongPassword123!';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

# 运行安全脚本(可选)
mysql_secure_installation

8. 常见报错及解决方案(覆盖 95% 问题)

  1. 缺少 libaio / numactl-libs → 下载对应 RPM 先安装,或 dnf install libaio numactl-libs(如果有本地源)。

  2. 初始化失败:Can't create test file /var/lib/mysql/... → chown -R mysql:mysql /var/lib/mysql 并 chmod 777 /var/lib/mysql 临时测试。

  3. 启动失败:Address already in use → ss -lntup | grep 3306 → 杀掉占用进程 kill -9 PID。

  4. SELinux 阻止 → 临时:setenforce 0 → 永久:/etc/selinux/config 改成 SELINUX=permissive 并重启。

  5. 防火墙阻挡

    Bash

    复制代码
    firewall-cmd --add-port=3306/tcp --permanent
    firewall-cmd --reload
  6. 无法远程连接 → 检查 bind-address=0.0.0.0 → 授权 root@'%' → 检查防火墙 + 云服务器安全组。

  7. 临时密码找不到了 → 查看日志 grep 'temporary password' /var/log/mysqld.log

  8. 字符集乱码 → my.cnf 里加 utf8mb4 配置,重启后 SHOW VARIABLES LIKE 'character_set_%'; 检查。

9. 常用管理命令

Bash

复制代码
systemctl start/stop/restart/status mysqld
mysql -uroot -p
mysqldump -uroot -p dbname > backup.sql
tail -f /var/log/mysqld.log

安装完成!浏览器或 Navicat 用 IP:3306 + root 密码即可连接

相关推荐
2501_915921432 小时前
傻瓜式 HTTPS 抓包,简单抓取iOS设备数据
android·网络协议·ios·小程序·https·uni-app·iphone
crossaspeed2 小时前
MySQL的MVCC
数据库·mysql
luoluoal3 小时前
基于opencv的疲劳检测系统(源码+文档)
python·mysql·django·毕业设计·源码
csj503 小时前
安卓基础之《(20)—高级控件(2)列表类视图》
android
怣503 小时前
MySQL表筛选分组全解析:排序、分组与限制的艺术
数据库·mysql
JMchen1233 小时前
Android计算摄影实战:多帧合成、HDR+与夜景算法深度剖析
android·经验分享·数码相机·算法·移动开发·android-studio
ActionTech4 小时前
MySQL 用好 Optimizer Trace,深刻理解 SQL 优化过程!
sql·mysql·oracle
恋猫de小郭4 小时前
Flutter 在 Android 出现随机字体裁剪?其实是图层合并时的边界计算问题
android·flutter·ios
2501_915918415 小时前
把 iOS 性能监控融入日常开发与测试流程的做法
android·ios·小程序·https·uni-app·iphone·webview