一键部署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方案

相关推荐
Zhu_S W4 小时前
Redis跳表:高效有序数据结构的深度剖析
数据结构·数据库·redis
جيون داد ناالام ميづ4 小时前
Spring AOP核心原理分析
java·数据库·spring
无敌最俊朗@4 小时前
SQLite 核心知识点讲解
jvm·数据库·oracle
小宋10214 小时前
Neo4j-图数据库入门图文保姆攻略
数据库·neo4j
lang201509285 小时前
Spring数据库连接控制全解析
java·数据库·spring
十八岁讨厌编程5 小时前
【后端SQL训练营】高频 SQL 50 题(基础版·上篇)
数据库·sql
迷失的walker5 小时前
【Qt C++ QSerialPort】QSerialPort fQSerialPortInfo::availablePorts() 执行报错问题解决方案
数据库·c++·qt
程序新视界5 小时前
什么是OLTP ,MySQL是如何支持OLTP的?
数据库·后端·mysql
pen-ai6 小时前
【数据工程】14. Stream Data Processing
数据库·oracle