MySQL 5.7 与 8.0.27 双版本共存完整配置指南 - 实践
摘要: 本文详细介绍如何在 Windows 系统上同时安装和配置 MySQL 5.7 和 8.0.27 两个版本,实现完美共存。通过独立端口、服务名和数据目录的配置,让两个版本互不冲突,满足不同项目的数据库需求。
为什么需要双版本共存
在实际开发中,我们经常会遇到以下场景:
- 项目兼容性: 老项目使用 MySQL 5.7,新项目需要 MySQL 8.0 的新特性
- 功能测试: 需要对比不同版本的功能差异
- 学习研究: 了解 MySQL 版本演进过程
- 平滑迁移: 逐步从旧版本迁移到新版本
通过双版本共存,我们可以:
- 同时运行两个版本的 MySQL 服务
- 独立管理各自的数据库和配置
- 避免版本冲突和数据丢失
- 灵活切换使用不同版本
系统架构设计
核心设计原则
| 组件 | MySQL 5.7 | MySQL 8.0.27 | 
|---|---|---|
| 服务名 | MySQL57 | MySQL80 | 
| 端口 | 3306 | 3307 | 
| 数据目录 | 独立目录 | 独立目录 | 
| 配置文件 | 独立配置 | 独立配置 | 
| 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 MySQL57MySQL 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服务安装与启动
手动安装步骤
- 安装 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
- 安装 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
- 设置服务自动启动: - sc config MySQL57 start= auto sc config MySQL80 start= auto
连接测试与验证
手动连接测试
- 测试 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
- 测试 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" 
                     
                    
                 
                    
                 
                
            
         
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号