下面我为您提供一个功能全面的一键部署MySQL方案,支持多种安装方式和平台。这个方案基于当前的最佳实践,并考虑了安全性和易用性。
🚀 一键部署MySQL方案概览
不同场景下的推荐部署方式:
| 部署方式 | 适用平台 | 核心优势 | 适用场景 |
|---|---|---|---|
| Shell脚本自动化部署 | CentOS/Ubuntu等Linux | 全自动化、可定制性强 | 生产环境、批量部署 |
| Docker容器化部署 | 全平台支持 | 环境隔离、快速启动 | 开发测试、CI/CD |
| 极简快速部署 | Linux/Windows | 步骤最少、快速验证 | 学习试用、临时环境 |
📋 详细部署指南
1. Shell脚本自动化部署(Linux环境)
以下是功能完整的MySQL自动化安装脚本,支持CentOS和Ubuntu系统:
bash
#!/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 ]; then
OS="centos"
elif [ -f /etc/lsb-release ]; then
OS="ubuntu"
else
echo "不支持的操作系统"
exit 1
fi
}
install_mysql() {
case $OS in
centos)
# CentOS安装流程[1,4](@ref)
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm
dnf config-manager --disable mysql*
dnf config-manager --enable mysql${MYSQL_VERSION//./}-community
dnf 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.deb
DEBIAN_FRONTEND=noninteractive dpkg -i /tmp/mysql.deb
apt-get update
apt-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
EOF
systemctl start mysqld
systemctl 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
EOF
fi
# 创建应用数据库和用户[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_check
install_mysql
configure_mysql
secure_installation
echo "MySQL安装完成!"
echo "Root密码: $ROOT_PASSWORD"
echo "应用数据库: $APP_DB_NAME"
echo "应用用户: $APP_DB_USER / $APP_DB_PASS"
}
main
使用方法:
bash
# 保存为install_mysql.sh,赋予执行权限
chmod +x install_mysql.sh
# 执行安装
sudo ./install_mysql.sh
2. Docker容器化部署方案
对于容器化环境,推荐使用Docker Compose进行部署
# docker-compose.yml
version: '3.8'
services:
mysql:
image: mysql:8.0
container_name: mysql_server
environment:
MYSQL_ROOT_PASSWORD: root123
MYSQL_DATABASE: app_db
MYSQL_USER: app_user
MYSQL_PASSWORD: app_pass123
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
- ./conf.d:/etc/mysql/conf.d
restart: unless-stopped
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --default-authentication-plugin=mysql_native_password
volumes:
mysql_data:
启动命令:
bash
docker-compose up -d
3. 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方案