麒麟os部署mysql失败时,可依架构和需求选择apt、rpm、二进制或arm专用配置四种方法:一、apt适用于v10桌面/服务器版;二、rpm适配银河麒麟v10服务器版;三、二进制包用于arm64或离线环境;四、arm64需额外配置认证插件;五、生产环境须配置防火墙与selinux。

如果您在麒麟操作系统上尝试部署MySQL数据库,但安装过程失败或服务无法启动,则可能是由于系统架构识别错误、依赖缺失、旧数据库残留冲突或配置不兼容所致。以下是针对不同麒麟OS版本和架构的多种部署方法:
一、使用APT包管理器快速安装(适用于麒麟V10桌面版/服务器版,x86_64或ARM64)
该方法利用麒麟OS官方源或适配的Debian系仓库,自动解决依赖并完成初始化,适合快速验证环境或开发测试场景。
1、打开终端,更新软件包索引:
sudo apt update
2、安装MySQL服务器核心组件:
sudo apt install mysql-server -y
3、安装完成后,系统将自动初始化数据目录并启动服务;验证服务状态:
sudo systemctl status mysql
4、若服务未运行,手动启动并设为开机自启:
sudo systemctl start mysql
sudo systemctl enable mysql
5、执行安全配置向导,设置root密码策略及移除不安全默认项:
sudo mysql_secure_installation
注意:若提示“The mysql_secure_installation script is not installed”,说明仅安装了客户端,需补装mysql-server或改用二进制方式。
二、通过RPM包安装(适用于银河麒麟高级服务器V10,x86_64,RHEL/CentOS兼容型)
该方法使用MySQL官方提供的RPM包,确保与系统glibc及systemd深度集成,适用于生产环境对稳定性与审计合规性要求较高的场景。
1、卸载可能存在的MariaDB或旧MySQL残留:
sudo rpm -qa | grep -E '(mariadb|mysql)' | xargs -r sudo rpm -e --nodeps
2、安装必要运行时依赖:
sudo dnf install -y libaio numactl
3、从MySQL官网下载对应RPM包(例如8.0.39):
wget https://cdn.mysql.com/Downloads/MySQL-8.0/mysql-community-server-8.0.39-1.el8.x86_64.rpm
4、按依赖顺序安装RPM包:
sudo rpm -ivh mysql-community-common-8.0.39-1.el8.x86_64.rpm
sudo rpm -ivh mysql-community-client-8.0.39-1.el8.x86_64.rpm
sudo rpm -ivh mysql-community-server-8.0.39-1.el8.x86_64.rpm
5、初始化数据目录(首次安装必须执行):
sudo mysqld --initialize --user=mysql --datadir=/var/lib/mysql
6、启动服务并查看临时root密码:
sudo systemctl start mysqld
sudo grep 'temporary password' /var/log/mysqld.log
关键提示:首次启动后必须使用日志中生成的临时密码登录并立即修改root密码,否则后续连接将被拒绝。
三、二进制包手动部署(适用于ARM64架构麒麟OS或无网络仓库环境)
该方法绕过包管理器,直接解压预编译二进制文件,可精确控制安装路径、用户权限与配置参数,适用于信创环境中对供应链可控性有强要求的部署。
1、确认CPU架构:
uname -m
2、创建专用用户与组:
sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql
3、下载ARM64或x86_64二进制包(如glibc2.17版本):
wget https://cdn.mysql.com/Downloads/MySQL-8.0/mysql-8.0.39-linux-glibc2.17-x86_64.tar.xz
4、解压至/usr/local并建立软链接:
sudo tar xf mysql-8.0.39-linux-glibc2.17-x86_64.tar.xz -C /usr/local/
sudo ln -s /usr/local/mysql-8.0.39-linux-glibc2.17-x86_64 /usr/local/mysql
5、设置环境变量:
echo 'export PATH=/usr/local/mysql/bin:$PATH' | sudo tee -a /etc/profile
source /etc/profile
6、创建数据目录并授权:
sudo mkdir -p /data/mysql
sudo chown -R mysql:mysql /data/mysql
7、准备my.cnf配置文件(保存至/etc/my.cnf):
[mysqld]
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
default_authentication_plugin=mysql_native_password
8、初始化数据库:
sudo /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql
重要提醒:必须确保/tmp/mysql.sock所在目录存在且mysql用户有写入权限,否则客户端连接将报错“Can't connect to local MySQL server”。
四、ARM64专用适配配置(适用于麒麟V10 SP2 ARM版)
该步骤专用于修复ARM平台下因默认认证插件不兼容导致的客户端连接失败问题,属于二进制或RPM安装后的必要补充操作。
1、编辑MySQL主配置文件:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
2、在[mysqld]段落末尾添加或修改以下行:
default_authentication_plugin=mysql_native_password
3、重启MySQL服务以使配置生效:
sudo systemctl restart mysql
4、登录MySQL并为root用户显式指定认证方式:
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_strong_password';
5、刷新权限表:
FLUSH PRIVILEGES;
特别注意:ARM64环境下若跳过此步,使用Navicat、DBeaver等图形工具连接时将提示“Client does not support authentication protocol requested by server”。
五、防火墙与SELinux适配(适用于生产环境加固场景)
该操作确保MySQL服务端口对外可达,同时满足国产操作系统安全策略要求,避免因策略拦截导致远程连接失败。
1、检查当前防火墙状态:
sudo firewall-cmd --state
2、若启用firewalld,开放3306端口:
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
3、检查SELinux状态:
sestatus
4、若SELinux处于enforcing模式,为MySQL端口打标:
sudo semanage port -a -t mysqld_port_t -p tcp 3306
5、验证端口标签是否生效:
sudo semanage port -l | grep mysql
安全提示:未经许可开放3306端口或将导致数据库暴露于公网,生产环境应严格限制访问IP范围或使用SSH隧道连接。










