一键部署MySQL
下面我为您提供一个功能全面的一键部署MySQL方案,支持多种安装方式和平台。这个方案基于当前的最佳实践,并考虑了安全性和易用性。
🚀 一键部署MySQL方案概览
不同场景下的推荐部署方式:
部署方式 | 适用平台 | 核心优势 | 适用场景 |
|---|---|---|---|
Shell脚本自动化部署 | CentOS/Ubuntu等Linux | 全自动化、可定制性强 | 生产环境、批量部署 |
Docker容器化部署 | 全平台支持 | 环境隔离、快速启动 | 开发测试、CI/CD |
极简快速部署 | Linux/Windows | 步骤最少、快速验证 | 学习试用、临时环境 |
📋 详细部署指南
1. Shell脚本自动化部署(Linux环境)
以下是功能完整的MySQL自动化安装脚本,支持CentOS和Ubuntu系统:
#!/bin/bash
# MySQL一键自动化部署脚本[6](@ref)# 配置区域(用户可根据需要修改)
MYSQL_VERSION="8.0" # 支持5.7/8.0
ROOT_PASSWORD="Sec@Pass123!" # root密码
APP_DB_NAME="webapp_db" # 初始数据库名
APP_DB_USER="webapp_user" # 应用用户名
APP_DB_PASS="App@Pass123!" # 应用用户密码
LISTEN_ADDR="0.0.0.0" # 监听地址# 系统检测和安装[6](@ref)
os_check() {if [ -f /etc/redhat-release ]; thenOS="centos"elif [ -f /etc/lsb-release ]; thenOS="ubuntu"elseecho "不支持的操作系统"exit 1fi
}install_mysql() {case $OS incentos)# CentOS安装流程[1,4](@ref)rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpmdnf config-manager --disable mysql*dnf config-manager --enable mysql${MYSQL_VERSION//./}-communitydnf install -y mysql-community-server;;ubuntu)# Ubuntu安装流程[2](@ref)wget -O /tmp/mysql.deb https://dev.mysql.com/get/mysql-apt-config_0.8.24-1_all.debDEBIAN_FRONTEND=noninteractive dpkg -i /tmp/mysql.debapt-get updateapt-get install -y mysql-server;;esac
}# 配置MySQL[6](@ref)
configure_mysql() {# 创建自定义配置文件cat > /etc/mysql/conf.d/custom.cnf <<EOF
[mysqld]
bind-address = $LISTEN_ADDR
default_authentication_plugin=mysql_native_password
transaction_isolation = READ-COMMITTED
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
max_connections = 2000
innodb_buffer_pool_size = 1G
EOFsystemctl start mysqldsystemctl enable mysqld
}# 安全初始化[1,6](@ref)
secure_installation() {if [ "$MYSQL_VERSION" == "8.0" ]; then# MySQL 8.0+ 密码处理[1](@ref)temp_pass=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}')mysql -uroot -p"$temp_pass" --connect-expired-password -e \"ALTER USER 'root'@'localhost' IDENTIFIED BY '$ROOT_PASSWORD'; FLUSH PRIVILEGES;"else# MySQL 5.7 安全安装[6](@ref)mysql_secure_installation <<EOF
y
$ROOT_PASSWORD
$ROOT_PASSWORD
y
y
y
y
EOFfi# 创建应用数据库和用户[6](@ref)mysql -uroot -p"$ROOT_PASSWORD" -e \"CREATE DATABASE $APP_DB_NAME; CREATE USER '$APP_DB_USER'@'%' IDENTIFIED BY '$APP_DB_PASS'; GRANT ALL PRIVILEGES ON $APP_DB_NAME.* TO '$APP_DB_USER'@'%'; FLUSH PRIVILEGES;"
}# 主执行流程
main() {echo "开始MySQL自动化部署..."os_checkinstall_mysqlconfigure_mysqlsecure_installationecho "MySQL安装完成!"echo "Root密码: $ROOT_PASSWORD"echo "应用数据库: $APP_DB_NAME"echo "应用用户: $APP_DB_USER / $APP_DB_PASS"
}main使用方法:
# 保存为install_mysql.sh,赋予执行权限
chmod +x install_mysql.sh
# 执行安装
sudo ./install_mysql.sh2. Docker容器化部署方案
对于容器化环境,推荐使用Docker Compose进行部署
# docker-compose.yml
version: '3.8'
services:mysql:image: mysql:8.0container_name: mysql_serverenvironment:MYSQL_ROOT_PASSWORD: root123MYSQL_DATABASE: app_dbMYSQL_USER: app_userMYSQL_PASSWORD: app_pass123ports:- "3306:3306"volumes:- mysql_data:/var/lib/mysql- ./conf.d:/etc/mysql/conf.drestart: unless-stoppedcommand: - --character-set-server=utf8mb4- --collation-server=utf8mb4_unicode_ci- --default-authentication-plugin=mysql_native_passwordvolumes:mysql_data:启动命令:
docker-compose up -d3. Windows系统极简部署
对于Windows环境,可以使用批处理脚本
@echo off
set INSTALL_DIR=C:\mysql-8.0.34-winx64
set DATA_DIR=C:\mysql_data
set ROOT_PASSWORD=Admin@123:: 下载并解压MySQL[1](@ref)
bitsadmin.exe /transfer MySQLDownload /download /priority normal https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.34-winx64.zip %TEMP%\mysql.zip
powershell Expand-Archive -Path %TEMP%\mysql.zip -DestinationPath %INSTALL_DIR%:: 初始化数据库[1,4](@ref)
mkdir %DATA_DIR%
%INSTALL_DIR%\bin\mysqld --initialize --console --datadir=%DATA_DIR% --user=root:: 启动服务
%INSTALL_DIR%\bin\mysqld --install MySQL80
net start MySQL80:: 修改密码[1](@ref)
set /p TEMP_PASSWORD=请输入临时密码:
%INSTALL_DIR%\bin\mysql -u root -p%TEMP_PASSWORD% --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '%ROOT_PASSWORD%';"🔧 安装后配置与验证
基本连接测试
mysql -u root -p"您的密码" -e "SHOW DATABASES;"服务状态检查
systemctl status mysqld # Linux系统服务检查
docker ps # Docker容器状态检查防火墙配置(如需要远程访问)
# CentOS
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload# Ubuntu
ufw allow 3306/tcp⚠️ 重要注意事项
密码安全:MySQL 8.0默认要求强密码策略,请使用包含大小写字母、数字和特殊字符的密码。
生产环境安全:
修改默认root密码
限制访问IP(bind-address配置)
定期进行安全审计
性能优化:
根据服务器内存调整innodb_buffer_pool_size
合理设置max_connections参数
备份策略:生产环境务必设置定期备份机制
💎 总结
以上一键部署方案涵盖了从简单测试到生产环境的不同需求。对于大多数用户,我推荐:
开发测试环境:使用Docker方案,简单快速
生产环境:使用Shell脚本方案,配置更灵活可控
Windows用户:使用批处理脚本或Docker方案
