
以下是银河麒麟 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. 前提准备(必须在有网机器上完成)
- 下载 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 校验文件(可选但强烈推荐)
- 常见系统依赖 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/ 目录。
- 从银河麒麟官方源或镜像下载(搜索 "ky10" + 包名):

麒麟依赖官方下载地址: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% 问题)
-
缺少 libaio / numactl-libs → 下载对应 RPM 先安装,或 dnf install libaio numactl-libs(如果有本地源)。
-
初始化失败:Can't create test file /var/lib/mysql/... → chown -R mysql:mysql /var/lib/mysql 并 chmod 777 /var/lib/mysql 临时测试。
-
启动失败:Address already in use → ss -lntup | grep 3306 → 杀掉占用进程 kill -9 PID。
-
SELinux 阻止 → 临时:setenforce 0 → 永久:/etc/selinux/config 改成 SELINUX=permissive 并重启。
-
防火墙阻挡
Bash
firewall-cmd --add-port=3306/tcp --permanent firewall-cmd --reload -
无法远程连接 → 检查 bind-address=0.0.0.0 → 授权 root@'%' → 检查防火墙 + 云服务器安全组。
-
临时密码找不到了 → 查看日志 grep 'temporary password' /var/log/mysqld.log
-
字符集乱码 → 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 密码即可连接