在CentOS系统中自动安装MySQL可以显著提高部署效率,减少手动操作的繁琐步骤,本文将详细介绍如何通过多种方式实现MySQL的自动化安装,包括使用Yum仓库、Ansible配置工具以及自动化脚本等方法,并涵盖安装后的基本配置与安全优化建议。

使用Yum仓库自动安装MySQL
CentOS系统推荐使用MySQL官方Yum仓库进行自动化安装,需下载并添加MySQL官方的Yum配置文件,以MySQL 8.0为例,执行以下命令:
sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm -y
安装完成后,可通过以下命令验证仓库是否添加成功:
sudo yum repolist enabled | ".*" ".*" | grep ".*" | grep ".*"
若输出中包含MySQL 8.0社区仓库,则表示配置成功,使用Yum命令直接安装MySQL服务器:
sudo yum install mysql-community-server -y
安装完成后,启动MySQL服务并设置开机自启:
sudo systemctl start mysqld sudo systemctl enable mysqld
首次启动后,MySQL会生成一个临时root密码,可通过以下命令查看:

sudo grep 'temporary password' /var/log/mysqld.log
使用Ansible实现自动化部署
Ansible作为一款自动化运维工具,可通过编写Playbook实现MySQL的批量安装,以下为示例Playbook内容:
---
- hosts: all
become: yes
tasks:
- name: Add MySQL Yum Repository
yum:
name: https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
state: present
- name: Install MySQL Server
yum:
name: mysql-community-server
state: latest
- name: Start and Enable MySQL
systemd:
name: mysqld
state: started
enabled: yes
执行Playbook前,需确保目标主机已配置Ansible SSH免密登录,运行命令:
ansible-playbook -i inventory.ini install_mysql.yml
inventory.ini为定义目标主机的主机清单文件。
编写Shell脚本实现一键安装
对于需要高度自定义的场景,可编写Shell脚本实现自动化安装,以下脚本示例包含添加仓库、安装、初始化及安全配置:
#!/bin/bash
# Add MySQL Repository
sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm -y
# Install MySQL Server
sudo yum install mysql-community-server -y
# Start MySQL
sudo systemctl start mysqld
# Get Temporary Password
TEMP_PASSWORD=$(sudo grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}')
# Run Security Script
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword!';" | mysql -uroot -p"$TEMP_PASSWORD"
mysql_secure_installation -p"YourNewPassword!" --set-root-pass --remove-anonymous-users --disallow-root-login --remove-test-databases --reload
将脚本保存为auto_install_mysql.sh,赋予执行权限后运行:

chmod +x auto_install_mysql.sh ./auto_install_mysql.sh
安装后的配置与优化
安装完成后,建议进行以下配置:
- 远程访问权限:登录MySQL后,执行以下命令允许远程连接:
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'Password123!'; GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
- 防火墙配置:开放MySQL默认端口3306:
sudo firewall-cmd --permanent --add-port=3306/tcp sudo firewall-cmd --reload
- 性能优化:根据服务器资源调整
/etc/my.cnf中的参数,如innodb_buffer_pool_size、max_connections等。
相关问答FAQs
Q1:如何解决MySQL安装过程中出现的依赖冲突问题?
A:若安装时提示依赖冲突,可使用yum deplist mysql-community-server查看依赖关系,或尝试更新系统包:sudo yum update -y后重新安装,若仍无法解决,可手动安装缺失的依赖包。
Q2:如何重置MySQL的root密码?
A:若忘记root密码,可通过以下步骤重置:
- 停止MySQL服务:
sudo systemctl stop mysqld - 跳过权限表启动:
sudo mysqld_safe --skip-grant-tables & - 登录MySQL并重置密码:
mysql -u root UPDATE mysql.user SET authentication_string=PASSWORD('NewPassword') WHERE User='root'; FLUSH PRIVILEGES; - 重启MySQL服务:
sudo systemctl restart mysqld