Skip to content

MySQL 在 Windows 上安装

安装前准备

系统要求

操作系统版本MySQL 5.7 最低配置MySQL 8.0 最低配置生产环境推荐配置
Windows Server 2016+8GB RAM, 4CPU, 50GB 磁盘16GB RAM, 8CPU, 100GB 磁盘32GB+ RAM, 16+ CPU, 500GB+ SSD
Windows Server 2019+8GB RAM, 4CPU, 50GB 磁盘16GB RAM, 8CPU, 100GB 磁盘32GB+ RAM, 16+ CPU, 500GB+ SSD
Windows Server 2022+16GB RAM, 8CPU, 100GB 磁盘32GB RAM, 16CPU, 200GB 磁盘64GB+ RAM, 32+ CPU, 1TB+ SSD
Windows 10/114GB RAM, 2CPU, 20GB 磁盘8GB RAM, 4CPU, 50GB 磁盘16GB RAM, 8CPU, 100GB 磁盘

环境检查与准备

  1. 检查系统信息

    • 右键「此电脑」→「属性」查看系统版本和硬件配置
    • 确认是 32 位还是 64 位系统(推荐 64 位)
    • 使用 systeminfo 命令查看详细系统信息
  2. 检查端口占用

    • 打开命令提示符(管理员):
      cmd
      # 检查 3306 端口是否被占用
      netstat -ano | findstr :3306
      
      # 如果有结果,查看进程名称
      tasklist /fi "PID eq <进程ID>"
      
      # 强制终止占用端口的进程
      taskkill /PID <进程ID> /F
  3. 配置防火墙

    • 推荐保留防火墙开启,添加 3306 端口入站规则
    • 使用 PowerShell 快速配置:
      powershell
      New-NetFirewallRule -DisplayName "MySQL 3306" -Direction Inbound -Protocol TCP -LocalPort 3306 -Action Allow
  4. 安装必要组件

  5. 关闭不必要的服务

    • 关闭占用大量内存或 CPU 的应用
    • 关闭其他数据库服务(如 SQL Server、PostgreSQL 等)
    • 禁用不必要的 Windows 服务

下载 MySQL 安装包

官方下载渠道

  1. 访问 MySQL 官方下载页
  2. 选择版本
    • 生产环境推荐 MySQL 8.0 最新稳定版
    • 如需兼容旧系统,可选择 MySQL 5.7 长期支持版
  3. 选择操作系统
    • Windows 64 位:选择 Windows (x86, 64-bit), ZIP ArchiveWindows (x86, 64-bit), MSI Installer
    • Windows 32 位:选择 Windows (x86, 32-bit), ZIP Archive(注意:MySQL 8.0 不再支持 32 位 Windows)

下载类型选择

下载类型优点缺点适用场景
MSI 安装包图形化向导,自动注册服务,内置配置工具安装过程较慢,自定义选项有限新手用户,快速部署,开发环境
ZIP 压缩包绿色安装,高度自定义,安装速度快,便于迁移需要手动配置,无自动服务注册高级用户,生产环境,需要精确控制
Chocolatey 安装命令行安装,自动管理依赖,便于批量部署需要先安装 Chocolatey自动化部署,DevOps 场景

MSI 安装包安装

运行安装程序

  1. 双击下载的 MSI 文件(如 mysql-installer-community-8.0.36.0.msi

  2. 选择安装类型

    • Developer Default:适合开发人员,包含 MySQL 服务器、客户端工具等
    • Server Only:仅安装 MySQL 服务器(生产环境推荐)
    • Client Only:仅安装客户端工具
    • Full:完整安装所有组件
    • Custom:自定义安装组件
  3. 示例:Server Only 安装

    • 选择「Server Only」→ 点击「Next」
    • 点击「Execute」开始安装依赖
    • 依赖安装完成后,点击「Next」

配置 MySQL 服务器

  1. 选择配置类型

    • Development Computer:开发电脑,适合低资源消耗
    • Server Computer:服务器电脑,适合中等资源消耗
    • Dedicated Computer:专用服务器,适合高资源消耗(生产环境推荐)
  2. 连接设置

    • 端口:默认 3306,生产环境可考虑修改为非默认端口
    • X Protocol Port:默认 33060,用于 MySQL X 协议
    • 打开防火墙端口:建议勾选
    • 启用 TCP/IP 连接:勾选(生产环境必需)
  3. 账户和角色

    • 设置 root 密码:使用强密码(包含大小写字母、数字、特殊字符,长度≥12位)
    • 添加专用 DBA 用户:如 dba_admin,设置复杂密码和适当权限
    • 启用密码策略:推荐启用强密码验证
  4. Windows 服务配置

    • 服务名称:默认 MySQL80,可自定义
    • 启动类型:选择「自动」(生产环境推荐)
    • 运行服务的账户
      • 选项1:「Standard System Account」(默认,推荐生产环境)
      • 选项2:自定义专用账户(需提前创建)
  5. 应用配置

    • 点击「Execute」执行配置
    • 配置完成后,点击「Finish」

安装完成验证

  1. 检查服务状态

    • 按下 Win + R → 输入 services.msc → 查找 MySQL 服务
    • 确认服务状态为「正在运行」
  2. 使用 MySQL Workbench 连接

    • 如果安装了 Workbench,打开后会自动检测到本地 MySQL 实例
    • 点击实例 → 输入密码 → 连接成功
  3. 使用命令行连接

    • 打开命令提示符:
      cmd
      # 进入 MySQL bin 目录(默认路径)
      cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"
      
      # 登录 MySQL
      mysql -uroot -p
      Enter password: 输入 root 密码
      
      # 查看版本
      SELECT VERSION();
      
      # 查看数据库状态
      SHOW STATUS;

ZIP 压缩包安装(生产环境推荐)

解压文件

  1. 解压 ZIP 文件:将下载的 ZIP 文件(如 mysql-8.0.36-winx64.zip)解压到目标目录

    • 推荐路径:D:\MySQL\mysql-8.0.36-winx64(避免包含空格的路径)
    • 生产环境建议使用独立磁盘或分区
  2. 创建必要目录

    cmd
    mkdir "D:\MySQL\mysql-8.0.36-winx64\data"       # 数据目录
    mkdir "D:\MySQL\mysql-8.0.36-winx64\logs"      # 日志目录
    mkdir "D:\MySQL\mysql-8.0.36-winx64\tmp"       # 临时文件目录
    mkdir "D:\MySQL\mysql-8.0.36-winx64\backup"    # 备份目录

创建配置文件

生产环境优化配置示例 my.ini

ini
[mysqld]
# 基础设置
port = 3306
server-id = 1
basedir = D:\MySQL\mysql-8.0.36-winx64
datadir = D:\MySQL\mysql-8.0.36-winx64\data
tmpdir = D:\MySQL\mysql-8.0.36-winx64\tmp
socket = D:\MySQL\mysql-8.0.36-winx64\mysql.sock
pid-file = D:\MySQL\mysql-8.0.36-winx64\mysql.pid

# 字符集设置
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

# 日志设置
log-error = D:\MySQL\mysql-8.0.36-winx64\logs\error.log
slow_query_log = 1
slow_query_log_file = D:\MySQL\mysql-8.0.36-winx64\logs\slow.log
long_query_time = 2
log_queries_not_using_indexes = 1
log_bin = D:\MySQL\mysql-8.0.36-winx64\logs\binlog
binlog_format = ROW
binlog_expire_logs_seconds = 604800
max_binlog_size = 1G

# InnoDB 设置
innodb_buffer_pool_size = 16G  # 物理内存的 50-70%
innodb_log_file_size = 2G
innodb_flush_log_at_trx_commit = 1  # 生产环境推荐 1(最高安全性)
innodb_file_per_table = 1
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
innodb_buffer_pool_instances = 8
innodb_flush_method = unbuffered  # 生产环境推荐,需要 SSD 支持
innodb_log_files_in_group = 4

# 连接设置
max_connections = 2000
wait_timeout = 60
interactive_timeout = 60
back_log = 1024
max_connect_errors = 1000000

# 查询优化
table_open_cache = 4096
table_definition_cache = 2048
max_heap_table_size = 128M
tmp_table_size = 128M
join_buffer_size = 8M
read_buffer_size = 4M
read_rnd_buffer_size = 8M

# MySQL 8.0 特有配置
default_authentication_plugin = caching_sha2_password
innodb_dedicated_server = 0  # 生产环境建议手动配置,不使用自动配置

[mysql]
default-character-set = utf8mb4

[client]
port = 3306
default-character-set = utf8mb4
socket = D:\MySQL\mysql-8.0.36-winx64\mysql.sock

[mysqldump]
quick
max_allowed_packet = 1G

初始化 MySQL

  1. 打开命令提示符(管理员权限)

  2. 进入 MySQL bin 目录

    cmd
    cd "D:\MySQL\mysql-8.0.36-winx64\bin"
  3. 初始化数据库

    • 生成随机 root 密码(生产环境推荐):

      cmd
      mysqld --initialize --console

      记录输出中的初始密码(如 root@localhost: <随机密码>

    • 无密码初始化(仅测试用,不推荐生产环境):

      cmd
      mysqld --initialize-insecure --console

安装和管理 Windows 服务

cmd
# 安装 MySQL 服务,服务名称为 MySQL80
mysqld --install MySQL80

# 启动服务
net start MySQL80

# 停止服务
net stop MySQL80

# 重启服务
net stop MySQL80 && net start MySQL80

# 删除服务
sc delete MySQL80

# 查看服务状态
sc query MySQL80

设置 root 密码和安全配置

cmd
# 登录 MySQL(使用初始随机密码)
mysql -uroot -p

# 设置新的 root 密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPassword123!';

# 创建专用 DBA 用户
CREATE USER 'dba_admin'@'localhost' IDENTIFIED BY 'DbaStrongPassword456!';
GRANT ALL PRIVILEGES ON *.* TO 'dba_admin'@'localhost' WITH GRANT OPTION;

# 安全加固:删除匿名用户
DELETE FROM mysql.user WHERE User='';

# 安全加固:限制 root 只能本地访问
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');

# 安全加固:删除测试数据库
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\_%';

# 刷新权限
FLUSH PRIVILEGES;

# 退出 MySQL
exit

Chocolatey 安装(自动化部署)

安装 Chocolatey

powershell
# 以管理员身份运行 PowerShell
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

安装 MySQL

powershell
# 安装 MySQL 8.0
choco install mysql --version=8.0.36 -y

# 安装 MySQL 5.7
choco install mysql --version=5.7.44 -y

# 安装 MySQL 客户端工具
choco install mysql.workbench -y

环境变量配置

为了在任意目录使用 MySQL 命令,需要配置环境变量:

  1. 图形化配置

    • 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
    • 编辑系统变量中的 Path,添加 MySQL bin 目录路径
  2. 命令行配置

    cmd
    # 临时设置(仅当前会话有效)
    set PATH=%PATH%;D:\MySQL\mysql-8.0.36-winx64\bin
    
    # 永久设置(需要管理员权限)
    setx /M PATH "%PATH%;D:\MySQL\mysql-8.0.36-winx64\bin"
  3. PowerShell 配置

    powershell
    # 永久设置环境变量
    [Environment]::SetEnvironmentVariable("Path", $env:Path + ";D:\MySQL\mysql-8.0.36-winx64\bin", [EnvironmentVariableTarget]::Machine)
  4. 验证环境变量

    • 打开新的命令提示符 → 输入 mysql --version
    • 显示 MySQL 版本信息则配置成功

远程访问配置

允许远程连接

sql
-- 登录 MySQL
mysql -uroot -p

-- 创建允许远程访问的用户
CREATE USER 'dba_remote'@'%' IDENTIFIED BY 'RemoteStrongPassword789!';
GRANT ALL PRIVILEGES ON *.* TO 'dba_remote'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

-- 或限制特定 IP 访问
CREATE USER 'dba_remote'@'192.168.1.%' IDENTIFIED BY 'RemoteStrongPassword789!';
GRANT ALL PRIVILEGES ON *.* TO 'dba_remote'@'192.168.1.%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

配置防火墙

powershell
# 允许 3306 端口入站连接
New-NetFirewallRule -DisplayName "MySQL 3306" -Direction Inbound -Protocol TCP -LocalPort 3306 -Action Allow

# 允许特定 IP 访问 3306 端口
New-NetFirewallRule -DisplayName "MySQL 3306 Restricted" -Direction Inbound -Protocol TCP -LocalPort 3306 -RemoteAddress 192.168.1.0/24 -Action Allow

测试远程连接

从另一台机器测试连接:

cmd
# 使用 MySQL 客户端连接
mysql -h <windows-mysql-server-ip> -udba_remote -p

# 使用 telnet 测试端口连通性
telnet <windows-mysql-server-ip> 3306

# 使用 PowerShell 测试端口连通性
Test-NetConnection -ComputerName <windows-mysql-server-ip> -Port 3306

自动化安装脚本

PowerShell 自动化安装脚本(ZIP 方式)

powershell
# MySQL 安装配置
$mysqlVersion = "8.0.36"
$installDir = "D:\MySQL\mysql-$mysqlVersion-winx64"
$rootPassword = "MySQLRootPassword123!"
$dbaPassword = "DBAAdminPassword456!"
$serviceName = "MySQL80"

# 下载 MySQL ZIP 包
Write-Host "正在下载 MySQL $mysqlVersion..." -ForegroundColor Green
$zipUrl = "https://dev.mysql.com/get/Downloads/MySQL-$mysqlVersion/mysql-$mysqlVersion-winx64.zip"
$zipFile = "mysql-$mysqlVersion-winx64.zip"
Invoke-WebRequest -Uri $zipUrl -OutFile $zipFile -UseBasicParsing

# 解压 ZIP 包
Write-Host "正在解压 MySQL $mysqlVersion..." -ForegroundColor Green
Expand-Archive -Path $zipFile -DestinationPath (Split-Path $installDir -Parent) -Force
Move-Item -Path "$(Split-Path $installDir -Parent)\mysql-$mysqlVersion-winx64" -Destination $installDir -Force

# 创建配置文件和目录
Write-Host "正在创建配置文件和目录..." -ForegroundColor Green
$myIniContent = @"
[mysqld]
port = 3306
server-id = 1
basedir = $installDir
datadir = $installDir\data
tmpdir = $installDir\tmp
socket = $installDir\mysql.sock
pid-file = $installDir\mysql.pid

character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

log-error = $installDir\logs\error.log
slow_query_log = 1
slow_query_log_file = $installDir\logs\slow.log
long_query_time = 2
log_queries_not_using_indexes = 1
log_bin = $installDir\logs\binlog
binlog_format = ROW
binlog_expire_logs_seconds = 604800
max_binlog_size = 1G

innodb_buffer_pool_size = 2G
innodb_log_file_size = 512M
innodb_flush_log_at_trx_commit = 1
innodb_file_per_table = 1
innodb_io_capacity = 2000
innodb_io_capacity_max = 4000
innodb_buffer_pool_instances = 4

max_connections = 1000
wait_timeout = 60
interactive_timeout = 60
back_log = 512
max_connect_errors = 1000000

table_open_cache = 2000
table_definition_cache = 1500
max_heap_table_size = 64M
tmp_table_size = 64M

default_authentication_plugin = caching_sha2_password

[mysql]
default-character-set = utf8mb4

[client]
port = 3306
default-character-set = utf8mb4
socket = $installDir\mysql.sock
"@

# 创建必要目录
mkdir -Force "$installDir\logs" | Out-Null
mkdir -Force "$installDir\tmp" | Out-Null
Set-Content -Path "$installDir\my.ini" -Value $myIniContent

# 初始化 MySQL
Write-Host "正在初始化 MySQL 数据库..." -ForegroundColor Green
Set-Location "$installDir\bin"
.mysqld --initialize --console

# 安装并启动服务
Write-Host "正在安装和启动 MySQL 服务..." -ForegroundColor Green
.mysqld --install $serviceName
net start $serviceName

# 获取初始密码
Write-Host "正在获取初始密码..." -ForegroundColor Green
$errorLog = Get-Content "$installDir\logs\error.log"
$initialPassword = $errorLog | Where-Object { $_ -match 'temporary password' } | Select-Object -Last 1
$initialPassword = $initialPassword -replace '.*root@localhost: (.*)$', '$1'

# 设置新密码和安全配置
Write-Host "正在配置安全设置..." -ForegroundColor Green
.mysql -uroot -p$initialPassword --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '$rootPassword'; CREATE USER 'dba_admin'@'localhost' IDENTIFIED BY '$dbaPassword'; GRANT ALL PRIVILEGES ON *.* TO 'dba_admin'@'localhost' WITH GRANT OPTION; DELETE FROM mysql.user WHERE User=''; DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1'); DROP DATABASE IF EXISTS test; DELETE FROM mysql.db WHERE Db='test' OR Db='test\_%'; FLUSH PRIVILEGES;"

# 配置远程访问
Write-Host "正在配置远程访问..." -ForegroundColor Green
.mysql -udba_admin -p$dbaPassword -e "CREATE USER 'dba_remote'@'%' IDENTIFIED BY '$dbaPassword'; GRANT ALL PRIVILEGES ON *.* TO 'dba_remote'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;"

# 配置防火墙
Write-Host "正在配置防火墙..." -ForegroundColor Green
New-NetFirewallRule -DisplayName "MySQL 3306" -Direction Inbound -Protocol TCP -LocalPort 3306 -Action Allow -ErrorAction SilentlyContinue

# 配置环境变量
Write-Host "正在配置环境变量..." -ForegroundColor Green
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";$installDir\bin", [EnvironmentVariableTarget]::Machine)

# 验证安装
Write-Host "正在验证安装..." -ForegroundColor Green
.mysql -udba_admin -p$dbaPassword -e "SELECT VERSION(), @@version_comment;"

# 清理临时文件
Remove-Item -Path $zipFile -Force

# 输出安装结果
Write-Host "`n======================================" -ForegroundColor Yellow
Write-Host "MySQL $mysqlVersion 安装完成!" -ForegroundColor Green
Write-Host "======================================" -ForegroundColor Yellow
Write-Host "Root 密码:$rootPassword" -ForegroundColor Cyan
Write-Host "DBA 密码:$dbaPassword" -ForegroundColor Cyan
Write-Host "服务名称:$serviceName" -ForegroundColor Cyan
Write-Host "安装目录:$installDir" -ForegroundColor Cyan
Write-Host "环境变量:已添加到系统 PATH" -ForegroundColor Cyan
Write-Host "远程访问:已配置允许所有 IP" -ForegroundColor Cyan
Write-Host "防火墙:已开放 3306 端口" -ForegroundColor Cyan
Write-Host "======================================" -ForegroundColor Yellow

常见问题解决

服务无法启动

  • 错误 1067:进程意外终止

    • 检查 my.ini 配置文件中的路径是否正确(注意转义字符)
    • 检查数据目录权限是否正确
    • 查看错误日志 error.log 定位具体问题
    • 尝试重新初始化数据库
  • 错误 1053:服务没有及时响应启动或控制请求

    • 检查 my.ini 配置文件是否有语法错误
    • 检查端口是否被占用
    • 检查内存是否充足
    • 尝试增加服务启动超时时间

忘记 root 密码

  1. 停止 MySQL 服务

    cmd
    net stop MySQL80
  2. 修改 my.ini 文件:在 [mysqld] 部分添加 skip-grant-tables

  3. 启动服务

    cmd
    net start MySQL80
  4. 无密码登录并修改密码

    cmd
    mysql -uroot
    
    # 选择 mysql 数据库
    USE mysql;
    
    # MySQL 5.7 修改密码
    UPDATE user SET authentication_string = PASSWORD('NewRootPassword!') WHERE User = 'root';
    
    # MySQL 8.0 修改密码
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewRootPassword!';
    
    # 刷新权限
    FLUSH PRIVILEGES;
    
    # 退出
    exit;
  5. 删除 my.ini 中的 skip-grant-tables 并重启服务

数据目录权限问题

  • 检查数据目录权限

    • 右键数据目录 →「属性」→「安全」
    • 确保服务运行账户(如 NETWORK SERVICE)有完全控制权限
  • 使用 icacls 修复权限

    cmd
    # 授予 NETWORK SERVICE 账户完全控制权限
    icacls "D:\MySQL\mysql-8.0.36-winx64\data" /grant "NETWORK SERVICE":(OI)(CI)F /T
    
    # 授予自定义账户完全控制权限
    icacls "D:\MySQL\mysql-8.0.36-winx64\data" /grant "MYSQL_SERVICE_ACCOUNT":(OI)(CI)F /T

MySQL 8.0 兼容性问题

  • 认证插件问题

    sql
    -- 为旧客户端启用 mysql_native_password 认证
    ALTER USER 'user'@'host' IDENTIFIED WITH mysql_native_password BY 'password';
    
    -- 全局设置默认认证插件(不推荐,降低安全性)
    SET GLOBAL default_authentication_plugin = mysql_native_password;
  • 系统变量名称变化

    • MySQL 8.0 中一些系统变量名称发生了变化,需查阅官方文档调整配置

卸载 MySQL

MSI 安装的卸载

  1. 打开控制面板 →「程序和功能」
  2. 找到 MySQL Server 8.0 → 右键「卸载」
  3. 按照卸载向导完成卸载
  4. 删除残留文件和注册表
    • C:\Program Files\MySQL
    • C:\ProgramData\MySQL
    • C:\Users\<用户名>\AppData\Roaming\MySQL
    • 使用 regedit 删除注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\MySQL ABHKEY_CURRENT_USER\SOFTWARE\MySQL AB

ZIP 安装的卸载

cmd
# 停止并删除服务
net stop MySQL80
sc delete MySQL80

# 删除 MySQL 目录
rmdir /s /q "D:\MySQL\mysql-8.0.36-winx64"

# 删除环境变量
# 手动编辑系统 Path,移除 MySQL bin 目录

版本差异与升级

MySQL 5.7 与 8.0 在 Windows 上的主要差异

特性MySQL 5.7MySQL 8.0
操作系统支持支持 32 位和 64 位 Windows仅支持 64 位 Windows
默认字符集latin1utf8mb4
默认认证插件mysql_native_passwordcaching_sha2_password
数据字典文件系统内置数据字典
JSON 支持基础支持增强支持(JSON_TABLE、JSON_PATH 等)
窗口函数不支持支持
通用表表达式 (CTE)不支持支持
内存占用较低较高
性能良好更好(特别是并发性能)
安全性良好增强(密码策略、审计日志等)

升级 MySQL

MSI 安装的升级

  1. 备份数据

    cmd
    mysqldump -uroot -p --all-databases --routines --triggers --events > all_databases_backup.sql
  2. 下载最新版本的 MSI 安装包

  3. 运行安装包 → 选择「Upgrade」

  4. 按照升级向导完成升级

  5. 升级完成后验证

    cmd
    # 运行升级检查工具
    mysql_upgrade -uroot -p
    
    # 验证服务状态
    sc query MySQL80
    
    # 验证数据完整性
    mysqlcheck --all-databases -uroot -p

ZIP 安装的升级

  1. 备份数据和配置

    cmd
    # 备份数据
    xcopy "D:\MySQL\mysql-5.7.44-winx64\data" "D:\MySQL\backup\data" /E /I /H /K
    
    # 备份配置文件
    copy "D:\MySQL\mysql-5.7.44-winx64\my.ini" "D:\MySQL\backup\my.ini"
    
    # 备份数据库
    mysqldump -uroot -p --all-databases --routines --triggers --events > "D:\MySQL\backup\all_databases.sql"
  2. 停止旧版本服务

    cmd
    net stop MySQL57
    sc delete MySQL57
  3. 安装新版本:按照 ZIP 安装步骤安装新版本

  4. 迁移数据

    • 对于小数据量,可使用 mysqldump 导入
    • 对于大数据量,可考虑直接复制数据目录(需版本兼容)
  5. 运行升级检查

    cmd
    mysql_upgrade -uroot -p

生产环境最佳实践

  1. 使用专用服务器:生产环境建议使用专用的 Windows Server 服务器
  2. 使用 SSD 存储:显著提升 MySQL 性能,特别是随机读写性能
  3. 合理配置内存
    • innodb_buffer_pool_size 设置为物理内存的 50-70%
    • 预留足够内存给操作系统和其他服务
  4. 启用二进制日志:用于数据恢复和主从复制
  5. 配置慢查询日志:便于性能分析和优化
  6. 定期备份
    • 配置自动备份策略(全量备份 + 增量备份)
    • 备份到异地存储
    • 定期测试备份恢复
  7. 监控与告警
    • 使用 MySQL Workbench、Zabbix 或 Prometheus + Grafana 监控
    • 监控关键指标:连接数、查询响应时间、慢查询数、磁盘空间等
  8. 安全加固
    • 使用强密码策略
    • 限制远程访问 IP
    • 定期更新 MySQL 版本
    • 启用审计日志
  9. 合理设置服务账户
    • 使用专用的低权限账户运行 MySQL 服务
    • 避免使用 Local System 账户
  10. 文档化配置:记录安装配置过程、版本信息和重要参数

总结

MySQL 在 Windows 上的安装方式多样,包括 MSI 安装包、ZIP 压缩包和 Chocolatey 安装。生产环境推荐使用 ZIP 压缩包方式,便于精确控制配置和管理。

在安装过程中,需要根据业务需求选择合适的 MySQL 版本,配置合理的系统参数和安全设置,并进行充分的测试和验证。自动化脚本可以提高安装效率,减少人为错误,适合批量部署场景。

无论选择哪种安装方式,都应遵循最佳实践,包括设置强密码、配置安全加固、合理调整参数、定期备份数据和监控性能,确保 MySQL 服务能够稳定、安全地运行。