一键部署MySQL

下面我为您提供一个功能全面的一键部署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

⚠️ 重要注意事项

  1. 密码安全​:MySQL 8.0默认要求强密码策略,请使用包含大小写字母、数字和特殊字符的密码。

  2. 生产环境安全​:

    • 修改默认root密码

    • 限制访问IP(bind-address配置)

    • 定期进行安全审计

  3. 性能优化​:

    • 根据服务器内存调整innodb_buffer_pool_size

    • 合理设置max_connections参数

  4. 备份策略​:生产环境务必设置定期备份机制

💎 总结

以上一键部署方案涵盖了从简单测试到生产环境的不同需求。对于大多数用户,我推荐:

  • 开发测试环境​:使用Docker方案,简单快速

  • 生产环境​:使用Shell脚本方案,配置更灵活可控

  • Windows用户​:使用批处理脚本或Docker方案

相关推荐
在风中的意志3 分钟前
[数据库SQL] [leetcode] 614. 二级关注者
数据库·sql
·云扬·4 分钟前
MySQL Group Replication(MGR)核心特性全解析:从事务流程到一致性配置
数据库·mysql
陌路207 分钟前
MYSQL事务篇--事务隔离机制的实现
数据库·mysql
oMcLin18 分钟前
CentOS 7.9 高负载导致 MySQL 数据库性能下降:内存泄漏与配置优化
数据库·mysql·centos
auspicious航19 分钟前
数据库同步技术演进:从备份转储到实时CDC的DBA实战指南
数据库·ffmpeg·dba
SmartRadio21 分钟前
物联网云平台数据库选型与搭建全指南(LoRaWAN)
数据库·物联网·lora·lorawan
bst@微胖子1 小时前
CrewAI+FastAPI实现营销战略协助智能体项目
android·数据库·fastapi
小鸡脚来咯1 小时前
MySQL面试题
数据库·mysql
、BeYourself1 小时前
✅ 宝塔 PostgreSQL 安装 contrib 扩展完整指南
数据库·postgresql·springai
枫叶丹41 小时前
【Qt开发】Qt系统(二)-> 事件分发器
c语言·开发语言·数据库·c++·qt·系统架构