CentOS环境下MySQL单机部署全攻略

一、环境准备与系统要求

在CentOS上部署MySQL单机环境前,需确保系统满足基础要求。推荐使用CentOS 7或8版本(本文以CentOS 7为例),因其对MySQL 8.0的兼容性较好。硬件方面,建议至少分配2GB内存(生产环境建议4GB+)、20GB磁盘空间(根据数据量调整),并确保网络连接稳定。

系统初始化步骤包括:

  1. 关闭SELinux:临时禁用执行setenforce 0,永久禁用需修改/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=disabled
  2. 配置防火墙:开放3306端口(MySQL默认端口),命令为firewall-cmd --zone=public --add-port=3306/tcp --permanent,随后执行firewall-cmd --reload生效。
  3. 更新系统包:运行yum update -y确保所有软件包为最新版本,避免兼容性问题。

二、MySQL安装方式对比与选择

CentOS上安装MySQL主要有三种方式:

  1. YUM仓库安装:官方推荐,支持自动依赖解决,但版本可能较旧。
  2. RPM包安装:适合需要特定版本或离线部署的场景。
  3. 二进制包解压安装:灵活度高,但需手动配置环境变量。

推荐方案:使用MySQL官方YUM仓库安装最新稳定版(如8.0)。步骤如下:

  1. 下载MySQL YUM仓库配置包:
    1. wget https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm
  2. 安装仓库配置:
    1. rpm -ivh mysql80-community-release-el7-6.noarch.rpm
  3. 安装MySQL服务器:
    1. yum install mysql-community-server -y

    此方式可自动处理依赖关系,并支持后续通过yum update升级。

三、MySQL服务初始化与配置

安装完成后,需进行初始化配置:

  1. 启动MySQL服务
    1. systemctl start mysqld
    2. systemctl enable mysqld # 设置开机自启
  2. 获取临时密码:MySQL 8.0首次启动会生成临时密码,通过以下命令查看:
    1. grep 'temporary password' /var/log/mysqld.log
  3. 运行安全脚本:执行mysql_secure_installation,按提示完成密码修改、移除匿名用户、禁止远程root登录等操作。例如:
    1. ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; -- 密码需包含大小写字母、数字和特殊字符

配置文件优化:编辑/etc/my.cnf(或/etc/mysql/my.cnf),根据需求调整参数:

  1. [mysqld]
  2. datadir=/var/lib/mysql
  3. socket=/var/lib/mysql/mysql.sock
  4. log-error=/var/log/mysqld.log
  5. pid-file=/var/run/mysqld/mysqld.pid
  6. # 性能优化参数示例
  7. innodb_buffer_pool_size=1G # 内存的50%-70%
  8. max_connections=200
  9. query_cache_size=64M

修改后重启服务生效:systemctl restart mysqld

四、数据库操作与基础管理

通过MySQL命令行客户端连接数据库:

  1. mysql -u root -p

常用操作示例

  1. 创建用户与授权
    1. CREATE USER 'app_user'@'localhost' IDENTIFIED BY '用户密码';
    2. GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'localhost';
    3. FLUSH PRIVILEGES;
  2. 创建数据库
    1. CREATE DATABASE app_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  3. 备份与恢复
    1. mysqldump -u root -p app_db > app_db_backup.sql # 备份
    2. mysql -u root -p app_db < app_db_backup.sql # 恢复

五、安全加固与运维建议

  1. 定期更新:通过yum update mysql-community-server升级至最新版本,修复安全漏洞。
  2. 日志监控:配置/var/log/mysqld.log轮转,避免日志文件过大。
  3. 资源限制:在/etc/security/limits.conf中设置用户进程数限制,防止资源耗尽。
  4. 慢查询优化:启用慢查询日志(slow_query_log=1),分析执行时间超过1秒的SQL语句。

六、故障排查与常见问题

  1. 服务无法启动:检查日志/var/log/mysqld.log,常见原因包括端口冲突、数据目录权限错误(需chown -R mysql:mysql /var/lib/mysql)。
  2. 连接拒绝:确认防火墙规则,检查bind-address参数(若为127.0.0.1则仅允许本地连接)。
  3. 性能下降:使用topvmstat监控系统资源,通过EXPLAIN分析SQL执行计划。

七、总结与扩展建议

CentOS上部署MySQL单机环境需兼顾安装便捷性与后期维护性。推荐采用官方YUM仓库安装,结合安全脚本和配置优化,可快速构建稳定的数据存储服务。对于高并发场景,可进一步考虑:

  • 升级至MySQL 8.0以利用更优的InnoDB引擎;
  • 配置/etc/my.cnf中的innodb_io_capacity参数以适配SSD磁盘;
  • 使用Percona Toolkit等工具进行数据库监控与维护。

通过规范化的部署流程和持续的优化管理,可确保MySQL在CentOS环境下高效稳定运行。