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

相关推荐
Elastic 中国社区官方博客4 小时前
如何通过个性化、分群感知排序来提升电商搜索相关性
大数据·数据库·elasticsearch·搜索引擎·全文检索
urkay-4 小时前
Android 数据库操作线程安全吗
android·数据库·安全
ZeroNews内网穿透4 小时前
RStudio Server 结合 ZeroNews,实现远程访问管理
运维·服务器·网络·数据库·网络协议·安全·web安全
李白你好4 小时前
Redis 漏洞图形化利用工具
数据库·redis·缓存
JosieBook4 小时前
【数据库】IoTDB数据库与时序大模型深度融合,开启数据智能分析新范式
数据库·iotdb
betazhou4 小时前
docker容器单机创建3个节点的MySQLMGR集群
运维·mysql·docker·容器·集群·mgr
Logic1014 小时前
《Mysql数据库应用》 第2版 郭文明 实验4 视图和索引的构建与使用核心操作与思路解析
数据库·sql·mysql·学习笔记·计算机网络技术·形考作业·国家开放大学
码农12138号4 小时前
网络安全-SQL注入
数据库·web安全·sql注入
破刺不会编程4 小时前
ubuntu环境下mysql的安装
数据库·mysql
合方圆~小文4 小时前
变焦摄像头画面时间戳同步方案
数据结构·数据库