麒麟V10 SP3系统下MySQL 8.0的部署与安全加固实战

张开发
2026/4/12 12:33:30 15 分钟阅读

分享文章

麒麟V10 SP3系统下MySQL 8.0的部署与安全加固实战
1. 麒麟V10 SP3系统下MySQL 8.0部署全流程在国产操作系统麒麟V10 SP3上部署MySQL 8.0整个过程可以分为环境准备、软件安装、服务配置三个主要阶段。我最近在项目中实际部署过多次总结出一套稳定可靠的安装流程下面就把详细步骤分享给大家。首先需要检查系统是否已经存在其他数据库软件。麒麟系统默认可能会安装MariaDB这与MySQL会产生冲突。执行以下命令查看rpm -qa | grep mariadb rpm -qa | grep mysql如果发现有相关软件包需要先进行卸载。我遇到过不少因为旧版本没卸载干净导致安装失败的情况所以这一步很重要sudo yum remove mariadb-server mariadb mariadb-common sudo yum remove mysql mysql-server接下来创建专门的安装目录这样便于管理安装文件。我习惯在/opt目录下创建mysql文件夹sudo mkdir /opt/mysql将下载好的MySQL安装包解压到这个目录。这里有个小技巧使用-v参数可以看到解压过程方便排查问题sudo tar -xvf mysql-8.0.41-1.el8.x86_64.rpm-bundle.tar -C /opt/mysql/进入安装目录后你会看到多个rpm包。安装顺序很关键我遇到过因为顺序不对导致的依赖错误。正确的安装顺序应该是cd /opt/mysql sudo rpm -ivh mysql-community-common-8.0.41-1.el8.x86_64.rpm sudo rpm -ivh mysql-community-client-plugins-8.0.41-1.el8.x86_64.rpm sudo rpm -ivh mysql-community-libs-8.0.41-1.el8.x86_64.rpm sudo rpm -ivh mysql-community-client-8.0.41-1.el8.x86_64.rpm sudo rpm -ivh mysql-community-icu-data-files-8.0.41-1.el8.x86_64.rpm sudo rpm -ivh mysql-community-server-8.0.41-1.el8.x86_64.rpm安装完成后就可以启动MySQL服务了。这里建议先检查服务状态确保一切正常sudo systemctl start mysqld sudo systemctl status mysqld第一次启动时MySQL会自动生成一个临时密码。这个密码存放在日志文件中可以通过以下命令查看sudo grep temporary password /var/log/mysqld.log使用这个临时密码登录后第一件事就是修改root密码。MySQL 8.0有密码强度要求我建议设置包含大小写字母、数字和特殊字符的复杂密码mysql -uroot -p alter user user() identified by YourNewStrongPassword123!;2. MySQL 8.0关键安全配置实战安装完成只是第一步要让MySQL真正安全可用还需要进行一系列安全加固。这部分内容很多DBA都会忽略但恰恰是最重要的环节。2.1 密码策略强化MySQL 8.0默认启用了密码验证组件这是很好的安全特性。但我们可以进一步调整策略# 查看当前密码策略 SHOW VARIABLES LIKE validate_password%; # 修改密码策略根据实际需求调整 SET GLOBAL validate_password.length 12; SET GLOBAL validate_password.mixed_case_count 1; SET GLOBAL validate_password.number_count 1; SET GLOBAL validate_password.special_char_count 1; SET GLOBAL validate_password.policy MEDIUM;建议将这些配置写入my.cnf文件使其永久生效。我遇到过因为没持久化配置重启后策略恢复默认导致的安全问题。2.2 远程访问控制很多项目需要远程连接MySQL但直接开放root远程访问风险很大。正确的做法是-- 创建专用管理账号 CREATE USER admin% IDENTIFIED BY StrongAdminPassword123!; GRANT ALL PRIVILEGES ON *.* TO admin% WITH GRANT OPTION; -- 限制root只能本地访问 UPDATE mysql.user SET hostlocalhost WHERE userroot; FLUSH PRIVILEGES;如果只需要特定IP访问可以将%换成具体IP地址。在实际项目中我还会配置防火墙规则只允许应用服务器IP连接数据库端口。2.3 服务自启动与日志配置生产环境需要确保MySQL服务能随系统自动启动sudo systemctl enable mysqld日志配置也很关键建议在my.cnf中添加以下配置[mysqld] log-error/var/log/mysqld.log slow_query_log1 slow_query_log_file/var/log/mysql-slow.log long_query_time2 log_binmysql-bin这样配置后既能记录错误日志也能捕获执行缓慢的SQL语句便于后续性能优化。3. 性能调优与生产环境建议MySQL安装配置完成后还需要根据实际业务需求进行性能调优。以下是我在多个项目中总结的经验。3.1 内存参数配置麒麟V10 SP3系统上MySQL内存配置需要根据服务器实际内存大小调整。对于8GB内存的服务器建议配置[mysqld] innodb_buffer_pool_size4G innodb_log_file_size256M innodb_log_buffer_size16M key_buffer_size256M query_cache_size0注意MySQL 8.0已经移除了query cache所以不需要配置query_cache_size参数。innodb_buffer_pool_size一般设置为物理内存的50%-70%。3.2 连接数设置默认的连接数配置可能无法满足高并发需求-- 查看当前连接数设置 SHOW VARIABLES LIKE max_connections; -- 建议设置 SET GLOBAL max_connections500; SET GLOBAL thread_cache_size50;同时建议配置连接超时时间避免长时间空闲连接占用资源[mysqld] wait_timeout300 interactive_timeout3003.3 定期维护建议生产环境MySQL需要定期维护我通常设置以下定时任务# 每天凌晨备份数据库 0 2 * * * /usr/bin/mysqldump -uadmin -pYourPassword --all-databases | gzip /backup/mysql_$(date \%Y\%m\%d).sql.gz # 每周优化表 0 3 * * 0 mysqlcheck -uadmin -pYourPassword --optimize --all-databases4. 常见问题排查与解决在实际部署过程中可能会遇到各种问题。这里分享几个我遇到过的典型问题及解决方法。4.1 安装依赖问题在麒麟系统上安装时可能会缺少依赖包。常见的解决方法# 安装所需依赖 sudo yum install libaio numactl # 如果遇到其他依赖问题可以尝试 sudo yum provides */libssl.so.1.14.2 服务启动失败如果MySQL服务启动失败首先检查错误日志sudo tail -n 50 /var/log/mysqld.log常见问题包括数据目录权限不正确配置文件语法错误端口被占用4.3 连接速度慢如果发现连接MySQL速度很慢可以尝试以下解决方案[mysqld] skip-name-resolve这个配置可以避免MySQL进行DNS反向解析通常能显著提高连接速度。

更多文章