在麒麟V10上装MySQL 8.0,优先用RPM包(el7或el8适配版),其次选二进制tar.xz包;源码编译仅当glibc<2.28或必须打补丁时才考虑。

直接说结论:在麒麟V10上装MySQL 8.0,优先用RPM包(el7或el8适配版),其次选二进制tar.xz包;源码编译仅当glibc < 2.28或必须打补丁时才考虑。
确认系统架构和glibc版本是否匹配
麒麟V10有x86_64和aarch64两种主流架构,MySQL官方预编译包对它们的支持程度不同。装错架构会导致error while loading shared libraries或cannot execute binary file。
- 查架构:
uname -m(输出必须是x86_64或aarch64) - 查glibc:
ldd --version(MySQL 8.0.4x要求≥2.28;若输出2.17或2.25,RPM/tar.xz大概率启动失败)
常见坑:
- 麒麟V10 SP2/SP3默认glibc为
2.28,但部分精简镜像或旧SP1可能仍是2.17 - el8 RPM包依赖glibc≥2.28,强行装在glibc 2.17系统上会报
libc.so.6(GLIBC_2.28)(64bit) is needed - 此时应换用el7 RPM包(兼容glibc 2.17),或改用源码编译(代价高)
RPM包安装必须按顺序、带--nodeps卸载冲突组件
麒麟V10默认预装mariadb-libs、mariadb-server等,与MySQL的mysql-community-libs直接冲突,不清理会导致file /usr/lib64/libmysqlclient.so.21 from install of mysql-community-libs conflicts with file from package mariadb-libs。
正确清理步骤:
- 列出冲突包:
rpm -qa | grep -E 'mariadb|mysql' - 强制卸载(顺序不重要,但必须加
--nodeps):rpm -e --nodeps mariadb-libs mariadb-common mariadb-server - 清残留配置和数据目录:
rm -rf /var/lib/mysql /etc/my.cnf /etc/my.cnf.d/
安装RPM时顺序不能错:
-
mysql-community-common→mysql-community-libs→mysql-community-client-plugins→mysql-community-client→mysql-community-server - 漏掉
client-plugins会导致mysqld --initialize失败,报Plugin 'caching_sha2_password' is not loaded
二进制tar.xz部署需手动建用户、配systemd、关SELinux限制
适合离线环境或需多实例共存场景,但比RPM多出至少5个易漏环节:
- 创建专用用户:
groupadd mysql && useradd -r -g mysql -s /bin/false mysql(不用root跑mysqld) - 解压后必须软链:
ln -sf mysql-8.0.45-linux-glibc2.28-x86_64 /usr/local/mysql(否则mysqld找不到plugin_dir) - 初始化命令要指定用户和datadir:
mysqld --initialize --user=mysql --datadir=/var/lib/mysql - systemd服务文件不能直接抄CentOS模板——麒麟V10的
systemd默认禁用ProtectHome=true,需在[Service]段加ProtectHome=false,否则启动报Permission denied - SELinux即使临时
setenforce 0,也建议永久关闭:sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config,否则/usr/local/mysql路径被拦
源码编译只在glibc严重不匹配或需定制时启用
耗时长(全程2小时+)、失败率高,仅适用于两类真实需求:
- 系统glibc为
2.17且无法升级,又没有可用el7 RPM包 - 必须启用
-DWITH_SSL=system绑定国产密码算法模块,或修改innodb_page_size等内核级参数
关键避坑点:
- 必须用
cmake3(麒麟源里叫cmake3,不是cmake),否则CMake Error at CMakeLists.txt:5 (cmake_minimum_required): -
rpcgen在麒麟源中缺失,需手动编译rpcsvc-proto-1.4.3,否则make卡在Generating mysql_version.h - Boost必须用官网带Boost的包(如
mysql-boost-8.0.42.tar.gz),单独装系统Boost会因版本不匹配导致undefined reference to boost::filesystem
最常被忽略的一点:源码编译生成的mysqld二进制仍依赖系统glibc符号,如果目标机glibc太老,编译机glibc太新,运行时照样崩溃——编译环境glibc版本不能高于目标机。


















