MySQL 5.7 与 8.0.27 双版本共存完整配置指南 - 实践

摘要: 本文详细介绍如何在 Windows 系统上同时安装和配置 MySQL 5.7 和 8.0.27 两个版本,实现完美共存。通过独立端口、服务名和数据目录的配置,让两个版本互不冲突,满足不同项目的数据库需求。


为什么需要双版本共存

在实际开发中,我们经常会遇到以下场景:

  • 项目兼容性: 老项目使用 MySQL 5.7,新项目需要 MySQL 8.0 的新特性
  • 功能测试: 需要对比不同版本的功能差异
  • 学习研究: 了解 MySQL 版本演进过程
  • 平滑迁移: 逐步从旧版本迁移到新版本

通过双版本共存,我们可以:

  • 同时运行两个版本的 MySQL 服务
  • 独立管理各自的数据库和配置
  • 避免版本冲突和数据丢失
  • 灵活切换使用不同版本

系统架构设计

核心设计原则

组件MySQL 5.7MySQL 8.0.27
服务名MySQL57MySQL80
端口33063307
数据目录独立目录独立目录
配置文件独立配置独立配置
X Protocol不支持33060

网络端口分配

┌─────────────────┬────────┬─────────────────────┐
│ 服务            │ 端口   │ 用途                │
├─────────────────┼────────┼─────────────────────┤
│ MySQL 5.7       │ 3306   │ 主数据库服务        │
│ MySQL 8.0.27    │ 3307   │ 新版本数据库服务    │
│ MySQL 8.0 X协议 │ 33060  │ X Protocol连接      │
└─────────────────┴────────┴─────────────────────┘

安装前准备

目录结构规划

D:\Mysql\
├── mysql-5.7.19-winx64\                    # MySQL 5.7 安装目录
│   └── mysql-5.7.19-winx64\
│       ├── bin\                            # 可执行文件
│       ├── data\                           # 数据目录
│       ├── my.ini                          # 配置文件
│       └── ...
├── mysql-8.0.27-winx64\                    # MySQL 8.0.27 安装目录
│   ├── bin\                                # 可执行文件
│   ├── data\                               # 数据目录
│   ├── my.ini                              # 配置文件
│   └── ...
├── MySQLfiles\                             # 共享文件目录
└── MysqlGUI\                               # 客户端工具
    └── SQLyog\

环境变量配置

:: 设置MySQL 5.7环境变量
set MYSQL57_HOME=D:\Mysql\mysql-5.7.19-winx64\mysql-5.7.19-winx64
set PATH=%MYSQL57_HOME%\bin;%PATH%
::设置MySQL 8.0.27环境变量
set MYSQL80_HOME=D:\Mysql\mysql-8.0.27-winx64
set PATH=%MYSQL80_HOME%\bin;%PATH%

MySQL 5.7 配置详解

配置文件位置

D:\Mysql\mysql-5.7.19-winx64\mysql-5.7.19-winx64\my.ini

核心配置内容

[client]
port=3306
default-character-set=utf8
[mysqld]
# ==================== 基础配置 ====================
basedir=D:\Mysql\mysql-5.7.19-winx64\mysql-5.7.19-winx64\
datadir=D:\Mysql\mysql-5.7.19-winx64\mysql-5.7.19-winx64\data\
port=3306
server-id=1
# ==================== 字符集配置 ====================
character-set-server=utf8
collation-server=utf8_general_ci
# ==================== 网络配置 ====================
bind-address=0.0.0.0
max_connections=200
wait_timeout=28800
interactive_timeout=28800
# ==================== 内存配置 ====================
query_cache_size=32M
query_cache_type=1
tmp_table_size=32M
max_heap_table_size=32M
sort_buffer_size=2M
read_buffer_size=2M
read_rnd_buffer_size=8M
join_buffer_size=2M
# ==================== InnoDB配置 ====================
innodb_buffer_pool_size=256M
innodb_log_file_size=64M
innodb_log_buffer_size=8M
innodb_flush_method=O_DIRECT
# ==================== 安全配置 ====================
skip-name-resolve
symbolic-links=0
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO
# ==================== 日志配置 ====================
log-error=D:\Mysql\mysql-5.7.19-winx64\mysql-5.7.19-winx64\data\mysql_error.log
slow_query_log=1
slow_query_log_file=D:\Mysql\mysql-5.7.19-winx64\mysql-5.7.19-winx64\data\mysql_slow.log
long_query_time=2
log-bin=mysql-bin
binlog_format=ROW
expire_logs_days=7
# ==================== 其他配置 ====================
default-storage-engine=INNODB
lower_case_table_names=1
thread_cache_size=8
table_open_cache=2000
table_definition_cache=1400
open_files_limit=65535

服务安装命令

:: 切换到MySQL 5.7 bin目录
cd /d "D:\Mysql\mysql-5.7.19-winx64\mysql-5.7.19-winx64\bin"
:: 安装MySQL 5.7服务
mysqld --install MySQL57 --defaults-file="D:\Mysql\mysql-5.7.19-winx64\mysql-5.7.19-winx64\my.ini"
:: 启动服务
net start MySQL57

MySQL 8.0.27 配置详解

配置文件位置

D:\Mysql\mysql-8.0.27-winx64\my.ini

核心配置内容

[client]
port=3307
default-character-set=utf8mb4
[mysqld]
# ==================== 基础配置 ====================
basedir=D:\Mysql\mysql-8.0.27-winx64\
datadir=D:\Mysql\mysql-8.0.27-winx64\data\
port=3307
server-id=2
# ==================== 字符集配置 ====================
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
# ==================== 网络配置 ====================
bind-address=0.0.0.0
max_connections=200
max_user_connections=50
wait_timeout=28800
interactive_timeout=28800
# ==================== 内存配置 ====================
tmp_table_size=32M
max_heap_table_size=32M
sort_buffer_size=2M
read_buffer_size=2M
read_rnd_buffer_size=8M
join_buffer_size=2M
# ==================== InnoDB配置 ====================
innodb_buffer_pool_size=256M
innodb_log_file_size=64M
innodb_log_buffer_size=8M
innodb_flush_method=O_DIRECT
innodb_file_format=Barracuda
# ==================== 安全配置 ====================
skip-name-resolve
symbolic-links=0
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO
# ==================== 日志配置 ====================
log-error=D:\Mysql\mysql-8.0.27-winx64\data\mysql_error.log
slow_query_log=1
slow_query_log_file=D:\Mysql\mysql-8.0.27-winx64\data\mysql_slow.log
long_query_time=2
log-bin=mysql-bin
binlog_format=ROW
expire_logs_days=7
# ==================== 其他配置 ====================
shared-memory
enable-named-pipe
default-storage-engine=INNODB
lower_case_table_names=1
thread_cache_size=8
table_open_cache=2000
table_definition_cache=1400
open_files_limit=65535

服务安装命令

:: 切换到MySQL 8.0.27 bin目录
cd /d "D:\Mysql\mysql-8.0.27-winx64\bin"
:: 安装MySQL 8.0.27服务
mysqld --install MySQL80 --defaults-file="D:\Mysql\mysql-8.0.27-winx64\my.ini"
:: 启动服务
net start MySQL80

服务安装与启动

手动安装步骤

  1. 安装 MySQL 5.7 服务

    :: 切换到MySQL 5.7 bin目录
    cd /d "D:\Mysql\mysql-5.7.19-winx64\mysql-5.7.19-winx64\bin"
    :: 安装MySQL 5.7服务
    mysqld --install MySQL57 --defaults-file="D:\Mysql\mysql-5.7.19-winx64\mysql-5.7.19-winx64\my.ini"
    :: 启动服务
    net start MySQL57
  2. 安装 MySQL 8.0.27 服务

    :: 切换到MySQL 8.0.27 bin目录
    cd /d "D:\Mysql\mysql-8.0.27-winx64\bin"
    :: 安装MySQL 8.0.27服务
    mysqld --install MySQL80 --defaults-file="D:\Mysql\mysql-8.0.27-winx64\my.ini"
    :: 启动服务
    net start MySQL80
  3. 设置服务自动启动

    sc config MySQL57 start= auto
    sc config MySQL80 start= auto

连接测试与验证

手动连接测试

  1. 测试 MySQL 5.7 连接

    :: 切换到MySQL 5.7 bin目录
    cd /d "D:\Mysql\mysql-5.7.19-winx64\mysql-5.7.19-winx64\bin"
    :: 连接MySQL 5.7
    mysql -u root -p -P 3306
  2. 测试 MySQL 8.0.27 连接

    :: 切换到MySQL 8.0.27 bin目录
    cd /d "D:\Mysql\mysql-8.0.27-winx64\bin"
    :: 连接MySQL 8.0.27
    mysql -u root -p -P 3307

版本信息查询

-- 连接MySQL 5.7 (端口3306)
mysql -u root -p -P 3306
-- 查询版本信息
SELECT VERSION();
SELECT @@port;
SELECT @@datadir;
SELECT @@basedir;
-- 连接MySQL 8.0.27 (端口3307)
mysql -u root -p -P 3307
-- 查询版本信息
SELECT VERSION();
SELECT @@port;
SELECT @@datadir;
SELECT @@basedir;

客户端工具配置

SQLyog 连接配置

MySQL 5.7 连接配置
参数
连接名MySQL 5.7
主机地址localhost
端口3306
用户名root
密码您的密码
数据库留空
MySQL 8.0.27 连接配置
参数
连接名MySQL 8.0.27
主机地址localhost
端口3307
用户名root
密码您的密码
数据库留空

命令行客户端配置

连接 MySQL 5.7

cd /d "D:\Mysql\mysql-5.7.19-winx64\mysql-5.7.19-winx64\bin"
mysql -u root -p -P 3306

连接 MySQL 8.0.27

cd /d "D:\Mysql\mysql-8.0.27-winx64\bin"
mysql -u root -p -P 3307

常见问题解决方案

1. 端口冲突问题

:: 检查端口占用
netstat -an | findstr :3306
netstat -an | findstr :3307
:: 如果端口被占用,可以修改配置文件中的端口号

2. 服务启动失败

:: 检查服务状态
sc query MySQL57
sc query MySQL80
:: 查看错误日志
type "D:\Mysql\mysql-5.7.19-winx64\mysql-5.7.19-winx64\data\mysql_error.log"
type "D:\Mysql\mysql-8.0.27-winx64\data\mysql_error.log"

3. SQLyog 连接问题

问题:Plugin caching_sha2_password could not be loaded

解决方案

-- 连接MySQL 8.0.27
mysql -u root -p -P 3307
-- 修改认证方式
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
FLUSH PRIVILEGES;

4. InnoDB 数据文件问题

问题:The innodb_system data file ‘ibdata1’ must be writable

解决方案

:: 停止所有MySQL进程
taskkill /f /im mysqld.exe
:: 删除数据目录
rmdir /s /q "D:\Mysql\mysql-8.0.27-winx64\data"
:: 重新初始化
cd /d "D:\Mysql\mysql-8.0.27-winx64\bin"
mysqld --initialize --console
:: 启动服务
net start MySQL80

服务管理

基本服务管理命令

启动服务

net start MySQL57    :: 启动MySQL 5.7
net start MySQL80    :: 启动MySQL 8.0.27

停止服务

net stop MySQL57     # 停止MySQL 5.7
net stop MySQL80     # 停止MySQL 8.0.27

查看服务状态

sc query MySQL57     # 查看MySQL 5.7状态
sc query MySQL80     # 查看MySQL 8.0.27状态

检查端口监听

netstat -an | findstr :3306    :: 检查MySQL 5.7端口
netstat -an | findstr :3307    :: 检查MySQL 8.0.27端口

查看日志文件

:: 查看MySQL 5.7错误日志
type "D:\Mysql\mysql-5.7.19-winx64\mysql-5.7.19-winx64\data\mysql_error.log"
:: 查看MySQL 8.0.27错误日志
type "D:\Mysql\mysql-8.0.27-winx64\data\mysql_error.log"

posted on 2025-10-27 16:20  wgwyanfs  阅读(4)  评论(0)    收藏  举报

导航