MySQL 8.0.28 麒麟V10 SP2 RPM包安装:3步解决依赖冲突与libtinfo.so.5报错
MySQL 8.0.28 麒麟V10 SP2 RPM包安装:3步解决依赖冲突与libtinfo.so.5报错
麒麟V10 SP2作为国产操作系统的代表,在企业级应用中越来越普及。而MySQL 8.0作为当前最流行的开源数据库之一,其性能和安全特性使其成为众多企业的首选。本文将详细介绍在麒麟V10 SP2系统上通过RPM包安装MySQL 8.0.28的完整流程,特别针对安装过程中常见的依赖冲突和libtinfo.so.5/6版本不兼容问题提供解决方案。
1. 环境准备与依赖检查
在开始安装MySQL之前,我们需要对系统环境进行彻底检查。麒麟V10 SP2基于Linux内核,但与常见的CentOS或Ubuntu在软件包管理上存在一些差异,这也是导致依赖问题的根源之一。
首先,检查系统是否已安装MySQL或其他数据库软件:
rpm -qa | grep -E 'mysql|mariadb'
如果发现已安装的旧版本MySQL或MariaDB,需要先彻底卸载:
sudo rpm -e --nodeps $(rpm -qa | grep -E 'mysql|mariadb')
接下来,检查系统关键依赖库的版本情况:
ldconfig -p | grep libtinfo
麒麟V10 SP2默认安装的是libtinfo.so.6,而MySQL 8.0.28依赖的是libtinfo.so.5,这会导致后续安装报错。我们可以提前准备兼容方案:
sudo dnf install -y compat-libtinfo5
如果系统中没有compat-libtinfo5包,也可以手动创建符号链接:
sudo ln -s /usr/lib64/libtinfo.so.6 /usr/lib64/libtinfo.so.5
2. RPM包安装与依赖解决
MySQL官方提供了完整的RPM包集合,我们需要下载对应版本的bundle包。对于麒麟V10 SP2系统,建议选择el8兼容版本:
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.28-1.el8.x86_64.rpm-bundle.tar
解压下载的RPM包集合:
tar -xvf mysql-8.0.28-1.el8.x86_64.rpm-bundle.tar
安装时需要特别注意包的顺序,以下是推荐的安装顺序及命令:
| 包名 | 作用 | 安装命令 |
|---|---|---|
| mysql-community-common | 公共文件 | sudo rpm -ivh mysql-community-common-8.0.28-1.el8.x86_64.rpm |
| mysql-community-client-plugins | 客户端插件 | sudo rpm -ivh mysql-community-client-plugins-8.0.28-1.el8.x86_64.rpm |
| mysql-community-libs | 共享库 | sudo rpm -ivh mysql-community-libs-8.0.28-1.el8.x86_64.rpm |
| mysql-community-client | 客户端工具 | sudo rpm -ivh mysql-community-client-8.0.28-1.el8.x86_64.rpm |
| mysql-community-icu-data-files | ICU数据文件 | sudo rpm -ivh mysql-community-icu-data-files-8.0.28-1.el8.x86_64.rpm |
| mysql-community-server | 服务器 | sudo rpm -ivh mysql-community-server-8.0.28-1.el8.x86_64.rpm |
如果在安装过程中遇到依赖错误,可以尝试以下解决方案:
- 缺少libaio :
sudo dnf install -y libaio - 缺少numactl :
sudo dnf install -y numactl - perl模块缺失 :
sudo dnf install -y perl-Data-Dumper perl-JSON
3. 配置优化与安全加固
安装完成后,MySQL服务会自动初始化并启动。我们可以通过以下命令检查服务状态:
sudo systemctl status mysqld
获取初始root密码:
sudo grep 'temporary password' /var/log/mysqld.log
使用临时密码登录并修改密码:
mysql -uroot -p
在MySQL命令行中执行:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword!';
接下来,我们需要进行一些基本的安全配置:
-
移除匿名用户 :
DROP USER ''@'localhost'; -
禁止root远程登录 :
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1'); -
移除测试数据库 :
DROP DATABASE IF EXISTS test; DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'; -
刷新权限 :
FLUSH PRIVILEGES;
对于生产环境,建议修改MySQL配置文件 /etc/my.cnf ,添加以下优化参数:
[mysqld]
# 基础配置
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# 性能优化
innodb_buffer_pool_size=4G
innodb_log_file_size=1G
innodb_flush_method=O_DIRECT
innodb_flush_neighbors=0
innodb_read_io_threads=8
innodb_write_io_threads=8
# 安全配置
skip_name_resolve=ON
local_infile=OFF
performance_schema=ON
# 字符集配置
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[client]
default-character-set=utf8mb4
修改配置后,重启MySQL服务使配置生效:
sudo systemctl restart mysqld
4. 常见问题解决方案
在实际安装过程中,可能会遇到以下典型问题:
问题1:libtinfo.so.5缺失错误
错误现象 :
error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
解决方案 :
方法一:安装兼容包(推荐)
sudo dnf install -y compat-libtinfo5
方法二:手动创建符号链接
sudo ln -s /usr/lib64/libtinfo.so.6 /usr/lib64/libtinfo.so.5
问题2:依赖冲突
错误现象 :
Error: Package: mysql-community-libs-8.0.28-1.el8.x86_64 (/mysql-community-libs-8.0.28-1.el8.x86_64)
Requires: libcrypto.so.1.1()(64bit)
解决方案 :
sudo dnf install -y openssl11-libs
问题3:服务启动失败
排查步骤 :
-
查看错误日志:
sudo journalctl -xe sudo tail -n 100 /var/log/mysqld.log -
检查SELinux状态:
sudo sestatus -
如果是SELinux导致的问题,可以临时设置为宽容模式:
sudo setenforce 0
问题4:密码策略过于严格
MySQL 8.0默认启用了强密码策略,如果希望降低要求,可以修改:
SET GLOBAL validate_password.policy=LOW;
ALTER USER 'root'@'localhost' IDENTIFIED BY '简单密码';
或者永久修改密码策略,在my.cnf中添加:
[mysqld]
validate_password.policy=LOW
5. 性能监控与日常维护
安装完成后,建议设置以下监控和维护措施:
关键性能指标监控命令 :
-
查看连接数:
SHOW STATUS LIKE 'Threads_connected'; -
查询缓存命中率:
SHOW STATUS LIKE 'Qcache%'; -
InnoDB缓冲池状态:
SHOW ENGINE INNODB STATUS;
定期维护任务 :
-
每日检查:
mysqlcheck -u root -p --all-databases --check-only-changed -
每周优化:
mysqlcheck -u root -p --all-databases --optimize -
备份策略(示例):
mysqldump -u root -p --all-databases --single-transaction --master-data=2 > full_backup.sql
自动化脚本示例 :
创建 /usr/local/bin/mysql_maintenance.sh :
#!/bin/bash
# 数据库备份
DATE=$(date +%Y%m%d)
BACKUP_DIR="/var/backups/mysql"
mkdir -p $BACKUP_DIR
mysqldump -u root -pYourPassword --all-databases --single-transaction --master-data=2 > $BACKUP_DIR/full_$DATE.sql
# 日志轮转
find /var/log/mysql/ -type f -name "mysql.log.*" -mtime +30 -exec rm {} \;
# 表优化
mysqlcheck -u root -pYourPassword --all-databases --optimize
设置定时任务:
sudo crontab -e
添加以下内容:
0 2 * * * /usr/local/bin/mysql_maintenance.sh
更多推荐



所有评论(0)