CentOS 7 系统下 MySQL 8.0.31 的完整部署与安全配置指南
1. 环境准备与依赖处理在CentOS 7上部署MySQL 8.0.31之前我们需要先处理系统环境。很多新手容易忽略这个环节结果安装时遇到各种依赖冲突。我去年给某电商平台做数据库迁移时就遇到过这类问题当时花了两小时才排查出是残留的mariadb导致的。首先检查系统版本这个很重要因为不同版本的CentOS 7内核可能对MySQL 8的兼容性有差异cat /etc/redhat-release接着要彻底清理系统自带的mariadb。别看这步简单实际操作时有三个坑我踩过直接用yum remove可能清理不干净残留的配置文件会导致后续安装异常忽略lib库文件会造成隐式冲突建议用这个组合拳清理rpm -qa | grep mariadb | xargs rpm -e --nodeps find / -name *mariadb* -exec rm -rf {} \;安装必要的依赖包时除了常见的perl还有个容易被忽略的包yum install -y perl openssl-devel libaio特别是libaioMySQL 8的InnoDB引擎会用到它做异步IO操作没装的话性能会打折扣。2. MySQL 8.0.31安装详解下载MySQL安装包时推荐用国内镜像源加速。我之前在阿里云环境实测用官方源要20分钟换国内镜像只要30秒wget https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-8.0.31-1.el7.x86_64.rpm-bundle.tar解压后你会看到十几个rpm包其实生产环境只需要装这5个核心包mysql-community-commonmysql-community-client-pluginsmysql-community-libsmysql-community-clientmysql-community-server按顺序安装时有个小技巧用rpm的--replacefiles参数避免文件冲突rpm -ivh mysql-community-* --replacefiles安装完成后别急着启动先检查下/etc/my.cnf文件。MySQL 8默认配置比较保守建议生产环境至少调整这些参数[mysqld] log_timestampsSYSTEM default_authentication_pluginmysql_native_password character-set-serverutf8mb4 collation-serverutf8mb4_unicode_ci3. 初始化与密码安全首次启动MySQL服务后很多人卡在密码重置这一步。MySQL 8的密码策略比5.7严格很多我遇到过客户设了20次密码都不符合要求的情况。查看临时密码的正确姿势grep temporary password /var/log/mysqld.log | awk {print $NF}登录后立即修改密码注意MySQL 8默认要求至少8位包含大小写字母包含数字包含特殊字符推荐用这个命令修改密码ALTER USER rootlocalhost IDENTIFIED BY MySecure123;如果想降低密码复杂度要求仅限测试环境可以临时调整策略SET GLOBAL validate_password.policyLOW;4. 远程访问与权限控制开放远程连接时直接改user表已经不够安全了。MySQL 8推荐用专门的授权命令CREATE USER admin% IDENTIFIED WITH mysql_native_password BY Admin123; GRANT ALL PRIVILEGES ON *.* TO admin% WITH GRANT OPTION;生产环境一定要限制访问IP比如只允许办公网段CREATE USER dba192.168.1.% IDENTIFIED BY Dba2023;MySQL 8新增了角色功能可以像这样创建运维角色CREATE ROLE dev_ops; GRANT SELECT, INSERT, UPDATE ON app_db.* TO dev_ops; GRANT dev_ops TO ops_user%;5. 安全加固实战安装完成后我通常会做这些安全加固措施修改默认端口编辑my.cnf添加port3307减少被扫描的概率开启SSL连接MySQL 8默认启用了SSL但需要确认证书是否生效SHOW VARIABLES LIKE %ssl%;配置连接数限制防止DDoS攻击SET GLOBAL max_connections 500; SET GLOBAL max_user_connections 50;启用审计日志企业版功能plugin-load-addaudit_log.so audit_log_formatJSON audit_log_policyALL定期密码轮换设置密码过期策略ALTER USER app_user% PASSWORD EXPIRE INTERVAL 90 DAY;6. 性能调优建议MySQL 8的默认配置适合开发环境生产环境需要优化。根据服务器内存大小我通常这样配置对于8G内存的服务器innodb_buffer_pool_size4G innodb_log_file_size1G innodb_flush_methodO_DIRECT对于32G内存的高性能服务器innodb_buffer_pool_size24G innodb_log_file_size4G innodb_thread_concurrency32监控InnoDB状态也很重要SHOW ENGINE INNODB STATUS\G7. 备份与恢复方案MySQL 8的备份方式有了新变化推荐使用mysqlpump工具mysqlpump -uroot -p --single-transaction --all-databases full_backup.sql对于大数据库可以用并行备份加速mysqlpump -uroot -p --parallel-schemas4:db1,db2 --parallel-schemas2:db3定期备份binlog也很关键PURGE BINARY LOGS BEFORE DATE_SUB(NOW(), INTERVAL 7 DAY);8. 常见故障排查遇到服务无法启动时先检查错误日志tail -100 /var/log/mysqld.log连接数爆满的应急处理mysqladmin -uroot -p processlist mysqladmin -uroot -p flush-hosts表损坏修复方法REPAIR TABLE corrupt_table USE_FRM;内存泄漏排查命令pmap -x $(pidof mysqld) | grep -i heap
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2428023.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!