☰
CentOS 7下MySQL 8.0安装与配置全指南
2026/10/28 21:28:07 网站建设 项目流程

1. CentOS系统与MySQL数据库概述

在Linux服务器环境中,CentOS因其稳定性和长期支持特性成为企业级应用的首选系统。作为最流行的开源关系型数据库之一,MySQL在Web应用、数据存储等领域占据重要地位。将MySQL部署在CentOS系统上,能够获得企业级的安全保障和性能表现。

我管理过上百台CentOS服务器,其中90%都运行着MySQL服务。不同于Windows环境的图形化安装,Linux环境下通过命令行安装MySQL更能体现系统管理的精髓。这里要特别说明的是,从CentOS 7开始,官方软件仓库默认提供的是MariaDB而非MySQL,但这并不影响我们安装原版MySQL。

2. 安装前的系统准备

2.1 系统版本确认

首先通过以下命令确认系统版本:

cat /etc/redhat-release

对于CentOS 7和8的安装方式略有不同,本文以CentOS 7为例。如果看到类似"CentOS Linux release 7.9.2009 (Core)"的输出,说明系统版本符合要求。

2.2 清理旧版本MySQL

如果系统之前安装过MySQL或MariaDB,需要先彻底清理:

sudo yum remove mysql mysql-server mariadb* sudo rm -rf /var/lib/mysql sudo rm -rf /etc/my.cnf

重要提示:执行删除操作前请确认没有重要数据库存在。我曾经遇到过新手误删生产环境数据库的惨剧,切记!

2.3 安装依赖包

安装MySQL需要一些基础依赖:

sudo yum install -y wget vim net-tools

3. MySQL官方仓库配置

3.1 添加MySQL YUM仓库

CentOS默认仓库不包含MySQL,需要手动添加官方仓库:

wget https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm sudo rpm -ivh mysql80-community-release-el7-5.noarch.rpm

3.2 验证仓库配置

检查仓库是否添加成功:

yum repolist enabled | grep "mysql.*-community.*"

应该能看到mysql80-community和mysql-tools-community两个仓库。

4. MySQL服务器安装

4.1 安装MySQL服务

执行安装命令:

sudo yum install -y mysql-community-server

这个过程会下载约200MB的安装包,视网络情况可能需要5-10分钟。

4.2 启动MySQL服务

安装完成后启动服务:

sudo systemctl start mysqld sudo systemctl enable mysqld

检查服务状态:

systemctl status mysqld

正常应该显示"active (running)"。

5. 初始安全配置

5.1 获取临时密码

MySQL 8.0安装后会生成一个临时root密码:

sudo grep 'temporary password' /var/log/mysqld.log

输出类似:[Note] A temporary password is generated for root@localhost: Jqklsdf&23

5.2 运行安全脚本

执行安全配置向导:

sudo mysql_secure_installation

按照提示操作:

  1. 输入刚才获取的临时密码
  2. 设置新密码(需包含大小写字母、数字和特殊字符)
  3. 移除匿名用户
  4. 禁止root远程登录
  5. 移除测试数据库
  6. 重新加载权限表

6. 基础配置优化

6.1 配置文件调整

编辑MySQL主配置文件:

sudo vim /etc/my.cnf

添加以下基础优化参数:

[mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci default-storage-engine=INNODB max_connections=200 innodb_buffer_pool_size=1G

经验之谈:innodb_buffer_pool_size建议设置为系统内存的50-70%,但不要超过系统可用内存。

6.2 重启服务生效

sudo systemctl restart mysqld

7. 防火墙配置

7.1 开放MySQL端口

如果使用防火墙,需要开放3306端口:

sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent sudo firewall-cmd --reload

7.2 验证端口开放

sudo netstat -tulnp | grep 3306

应该看到MySQL正在监听3306端口。

8. 创建管理用户

8.1 登录MySQL

mysql -u root -p

8.2 创建管理用户

CREATE USER 'admin'@'%' IDENTIFIED BY 'Strong@Password123'; GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;

9. 常见问题排查

9.1 安装失败处理

如果安装过程中出现依赖错误,可以尝试:

sudo yum clean all sudo yum makecache

9.2 连接问题排查

如果无法连接MySQL,检查:

  1. 服务是否运行:systemctl status mysqld
  2. 端口是否监听:netstat -tulnp | grep 3306
  3. 防火墙设置:firewall-cmd --list-ports

9.3 密码重置方法

如果忘记root密码:

  1. 停止MySQL服务
  2. 在my.cnf的[mysqld]段添加skip-grant-tables
  3. 重启服务后无密码登录
  4. 执行ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'
  5. 移除skip-grant-tables并重启服务

10. 性能监控与维护

10.1 基础监控命令

查看MySQL运行状态:

SHOW STATUS; SHOW PROCESSLIST;

10.2 定期维护建议

建议设置定期任务:

# 每周优化所有表 mysqlcheck -u root -p --auto-repair --optimize --all-databases

11. 备份与恢复

11.1 基础备份方法

使用mysqldump进行完整备份:

mysqldump -u root -p --all-databases > full_backup.sql

11.2 定时备份脚本

创建自动备份脚本:

#!/bin/bash DATE=$(date +%Y%m%d) mysqldump -u root -p密码 --all-databases > /backups/mysql_$DATE.sql find /backups -type f -mtime +7 -delete

设置cron任务每天执行。

12. 版本升级指南

12.1 小版本升级

直接通过yum更新:

sudo yum update mysql-community-server

12.2 大版本升级

如从5.7升级到8.0:

  1. 完整备份所有数据库
  2. 卸载旧版本
  3. 安装新版本仓库
  4. 安装新版本
  5. 运行mysql_upgrade

13. 高可用配置建议

对于生产环境,建议考虑:

  1. 主从复制配置
  2. MySQL集群
  3. 使用ProxySQL实现读写分离

14. 安全加固措施

14.1 基础安全设置

  1. 定期更换密码
  2. 限制root远程登录
  3. 为每个应用创建独立用户

14.2 审计日志配置

在my.cnf中添加:

[mysqld] plugin-load-add = audit_log.so audit_log_format=JSON audit_log_policy=ALL

15. 性能优化进阶

15.1 关键参数调整

根据服务器配置调整:

innodb_log_file_size=256M innodb_flush_log_at_trx_commit=2 sync_binlog=1000

15.2 查询优化建议

  1. 为常用查询字段添加索引
  2. 避免SELECT * 查询
  3. 使用EXPLAIN分析慢查询

16. 容器化部署方案

16.1 Docker安装MySQL

对于测试环境,可以使用Docker快速部署:

docker run --name mysql -e MYSQL_ROOT_PASSWORD=密码 -p 3306:3306 -d mysql:8.0

16.2 数据持久化配置

确保数据持久化:

docker run --name mysql -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=密码 -p 3306:3306 -d mysql:8.0

17. 图形化管理工具

推荐使用:

  1. MySQL Workbench(官方工具)
  2. phpMyAdmin(Web界面)
  3. DBeaver(跨平台)

安装phpMyAdmin示例:

sudo yum install -y epel-release sudo yum install -y phpmyadmin

18. 故障恢复案例

18.1 数据文件损坏修复

如果遇到表损坏:

REPAIR TABLE 表名;

18.2 InnoDB恢复流程

  1. 在my.cnf中添加innodb_force_recovery=1到6(逐步尝试)
  2. 启动服务并导出数据
  3. 重建数据库

19. 监控方案集成

推荐监控方案:

  1. Prometheus + Grafana
  2. Zabbix
  3. Percona Monitoring and Management

安装Percona监控:

sudo yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm sudo percona-release setup pmm2 sudo yum install -y pmm2-client

20. 自动化运维实践

20.1 Ansible部署MySQL

使用Ansible自动化安装:

- hosts: dbservers tasks: - name: Add MySQL repository yum_repository: name: mysql80-community description: MySQL 8.0 Community baseurl: http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch/ gpgkey: https://repo.mysql.com/RPM-GPG-KEY-mysql gpgcheck: yes enabled: yes

20.2 配置管理实践

使用配置管理工具确保一致性:

  1. Ansible
  2. Puppet
  3. Chef

21. 版本兼容性说明

不同MySQL版本对CentOS的支持:

  1. MySQL 5.7:支持CentOS 7
  2. MySQL 8.0:支持CentOS 7/8
  3. 最新MySQL版本可能需要CentOS 8+

22. 资源限制调整

22.1 系统限制修改

调整文件打开限制:

echo "mysql hard nofile 65535" >> /etc/security/limits.conf echo "mysql soft nofile 65535" >> /etc/security/limits.conf

22.2 内核参数优化

调整内核参数:

echo "vm.swappiness = 10" >> /etc/sysctl.conf sysctl -p

23. 日志管理策略

23.1 日志轮转配置

配置日志轮转:

sudo vim /etc/logrotate.d/mysql

添加内容:

/var/log/mysqld.log { daily rotate 7 missingok compress delaycompress notifempty create 640 mysql mysql postrotate /usr/bin/mysqladmin flush-logs endscript }

24. 压力测试方法

使用sysbench进行基准测试:

sudo yum install -y sysbench sysbench oltp_read_write --db-driver=mysql --mysql-host=localhost --mysql-user=root --mysql-password=密码 prepare sysbench oltp_read_write --db-driver=mysql --mysql-host=localhost --mysql-user=root --mysql-password=密码 --threads=8 --time=300 run

25. 最佳实践总结

根据多年运维经验,建议:

  1. 生产环境使用MySQL 8.0最新稳定版
  2. 为每个应用创建独立数据库和用户
  3. 定期备份并测试恢复流程
  4. 监控关键性能指标
  5. 保持系统补丁更新

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询