MySQL安装多版本与版本切换

起因

今天在将一个项目部署到本地,找到的这个项目使用的MySQL版本是MySQL5.7,应该是比较古早的项目了,但是我现在装的是8.4版本的,所以涉及MySQL的版本切换,这里记录一下操作方法。


如何安全切换版本而不删除原有MySQL?

1. 仅停止旧服务,保留文件
  • 停止并删除旧服务(若之前安装的时候没有自己指定MySQL服务名,则默认为MySQL):

    #停止现有的MySQL服务
    net stop MySQL
    # 确认旧服务不会再用可以选择直接在删除服务
    sc delete MySQL
    
  • 注意:此操作仅移除服务注册,不会删除安装目录(如D:\MySQL\mysql-8.4.1-winx64)和数据目录(默认在ProgramData\MySQL或自定义路径)。

为什么需要删除服务?

当你在Windows中安装MySQL时,系统会注册一个服务(如默认的MySQLMySQL80)。若直接安装第二个MySQL实例,可能会因服务名冲突导致报错The service already exists!。因此,删除旧服务是为了解决服务名冲突问题,而不是卸载MySQL。切换版本时只需处理服务注册项,保留原有数据和程序文件即可。

2. 添加配置文件my.ini

若安装MySQL的方法为直接下载压缩包的话,是没有自带my.ini文件的,需要自己新建一个,位置为根目录D:\MySQL\mysql-8.4.1-winx64\下,具体内容如下。

示例my.ini配置:

[mysqld]
#端口号 若有多个mysql,端口号应不同
port = 3307              
#mysql-5.7.43-winx64的路径
basedir=D:\MySQL\mysql-5.7.43-winx64           #修改为自己的数据库解压路径
#mysql-5.7.43-winx64的路径+\data
datadir=D:\MySQL\mysql-5.7.43-winx64\data   #修改为自己的数据库存储路径
 
#最大连接数
max_connections=200
#编码
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[mysql]
#编码
default-character-set=utf8 
3. 安装新版本时指定独立配置
  • 进入新版本的**bin目录**,执行安装命令时需:

    • 指定新服务名:避免与旧服务冲突(如MySQL_New)。
    • 配置独立端口和数据目录:在my.ini中设置不同端口(如3307)和datadir路径。
    mysqld install MySQL_New --defaults-file="D:\新版本路径\my.ini"
    
    # 例:
    mysqld install MySQL841 --defaults-file="D:\MySQL\mysql-8.4.1-winx64\my.ini"
    
  • 初始化并启动新服务:

    执行初始化命令之后会得到一个随机生成的密码,用于初次连接登录。

    # 初始化
    mysqld --defaults-file="D:\MySQL\mysql-8.4.4-winx64\my.ini" --initialize --console
    # 启动
    net start MySQL_New
    
  • 连接,进入MySQL命令行

    # 连接版本(端口3307)
    mysql -uroot -P3307 -p
    
  • 更改密码

    将随机密码更改为自己熟悉的密码,如``123456`

    ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
    
4. 多版本共存与切换
  • 通过不同服务名启动/停止

    net start MySQL_New   # 启动新版本
    net stop MySQL_Old    # 停止旧版本
    
  • 通过不同端口连接

    mysql -uroot -P3306 -p   # 连接旧版本(端口3306)
    mysql -uroot -P3307 -p   # 连接新版本(端口3307)
    
  • 环境变量切换(可选):
    将常用版本的bin目录放在系统变量Path最前面,或通过批处理脚本临时切换路径。


注意事项

  1. 数据安全
    删除服务时切勿误删datadir文件夹(包含数据库文件)或basedir(安装目录)。若需彻底卸载,才需手动删除这些目录。
  2. 注册表残留
    若后续安装失败,检查注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services中是否残留旧服务项并手动删除。
  3. 配置文件隔离
    确保新旧版本的my.ini文件独立,避免端口或路径冲突。

篇结。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/980120.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在Linux环境下利用MTCNN进行人脸检测(基于ncnn架构)

概述 本文将详细介绍如何在Linux环境下部署MTCNN模型进行人脸检测,并使用NCNN框架进行推理。 1. CMake的安装与配置 下载CMake源码 前往CMake官网下载,找到适合您系统的最新版本tar.gz文件链接,或者直接通过wget下载:CMake官方…

Ruby 数组(Array)

一、参数 符号赋值数组对象 时,是指向同一个数组对象 eg: irb(main):019:0> a [] //定义一个数组 > [] irb(main):020:0> b a //将变量a赋值给b,a和b指向同个内存 > [] irb(main):021:0> a.object_id //a的对象id > 25204596 …

【无人机】无人机飞行日志下载及分析,飞行日志分析软件的使用

目录 一、飞行日志下载 1.1 通过地面站下载 1.1.1 QGroundControl(QGC)地面站 1.1.2 Mission Planner 地面站 1.2 通过内存卡读卡器下载 1.3 通过数传模块下载(数传日志) 二、飞行日志分析 2.1 使用 Flight Review 分析 …

Coredns延迟NodeLocalDNS解决之道

#作者:邓伟 文章目录 问题列表问题分析:问题分析解决方案详情方案验证部署步骤验证结论回滚方案回滚验证注意事项NodeLocalDNS介绍 问题列表 近来发现K8s频繁出现5s超时问题,业务反馈收到一定影响,问题包括: coredn…

由堆栈异常引发的一系列问题启发

文章目录 背景分析现象排查定位数据比对解决方案反思背景 背景:今天下午初始化经营体数据到预发环境,需要将生产环境的经营体表的数据同步到预发环境,同步结束后。再调用批量禁用接口,目的是将原来一级经营体【中国移动】下的所有经营体禁用掉,然后导入Excel文件将新的省…

[2/11]C#性能优化-不要使用空析构函数-每个细节都有示例代码

前言 在C#开发中,性能优化是提升系统响应速度和资源利用率的关键环节。 当然,同样是所有程序的关键环节。 通过遵循下述建议,可以有效地减少不必要的对象创建,从而减轻GC的负担,提高应用程序的整体性能。记住&#xf…

Llama-factory详细基础使用说明

最近很多小伙伴在使用llama-factory时遇到了不少问题,特别是基础不太好的童鞋,对各种参数或者webui界面的内容不理解,总是一会一个问题,网上大部分的教程,都只是教到能跑起来就行,对于细的调整没有做介绍&a…

excel单、双字节字符转换函数(中英文输入法符号转换)

在Excel中通常使用函数WIDECHAR和ASC来实现单、双字节字符之间的转换。其中 WIDECHAR函数将所有的字符转换为双字节,ASC函数将所有的字符转换为单字节 首先来解释一下单双字节的含义。单字节一般对应英文输入法的输入,如英文字母,英文输入法…

VS Code 如何搭建CC++开发环境

VS Code 如何搭建C/C开发环境 文章目录 VS Code 如何搭建C/C开发环境1. VS Code是什么2. VS Code的下载和安装2.1 下载和安装2.2 环境的介绍 3. VS Code配置C/C开发环境3.1 下载和配置MinGW-w64编译器套件3.2 安装C/C插件3.3 重启VS Code 4. 在VS Code上编写C语言代码并编译成功…

间隙波导阵列天线 学习笔记2 使用加载脊U型辐射层的一种Ka波段高效率圆极化卫星天线的发展

摘要: 本文提出了一种低剖面,高增益背腔槽阵列天线,基于RGW技术,工作在Ka频段。天线阵列包含两层。上层是一个U型槽阵列,在金属脊上腔体的位置上方,同时下层是RGW公共分布网络,给每个背腔槽等辐…

【软考-架构】1.1、计算机硬件-CPU校验码

GitHub地址:https://github.com/tyronczt/system_architect ✨资料&文章更新✨ 计算机硬件组成 中央处理单元 运算器 算术逻辑单元ALU(实现对数据的算术和逻辑运算);累加寄存器AC(运算结果或源操作数的存放区);数…

【Spring】Spring AOP原理

目录 前言 代理模式 静态代理 优缺点 动态代理 JDK动态代理 工作原理 JDK动态原理实现关键步骤 CGLib动态代理 CGLIB动态代理实现关键步骤 总结 前言 在上一篇中,我们讲解了什么是AOP,以及Spring AOP是如何使用的,那么本篇我们就…

SpringBoot五:JSR303校验

精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 松散绑定 意思是比如在yaml中写的是last-name,这个和lastName意思是一样的,-后的字母默认是大写的 JSR303校验 就是可以在字段增加…

uniapp 系统学习,从入门到实战(六)—— 样式与布局

全篇大概 4700 字(含代码),建议阅读时间 30min 📚 目录 Flex 布局在 UniApp 中的应用响应式设计与适配多端使用 SCSS 提升样式开发效率实战案例演示总结 1. Flex 布局在 UniApp 中的应用 1.1 基础布局实现 通过 display: flex 快速构建弹性容器&#…

Redis---缓存穿透,雪崩,击穿

文章目录 缓存穿透什么是缓存穿透?缓存穿透情况的处理流程是怎样的?缓存穿透的解决办法缓存无效 key布隆过滤器 缓存雪崩什么是缓存雪崩?缓存雪崩的解决办法 缓存击穿什么是缓存击穿?缓存击穿的解决办法 区别对比 在如今的开发中&…

从UNIX到Linux:操作系统进化史与开源革命

从UNIX到Linux:操作系统进化史与开源革命 一、操作系统:数字世界的基石 1.1 什么是操作系统? 操作系统(OS)是计算机系统的核心管理者,承担着三大核心使命: 硬件指挥官:直接管理C…

【Python 语法】算法合集

查找二分查找代码大 O 表示法 广度优先搜索代码 狄克斯特拉算法 递归递归调用栈 分而治之(divide and conquer,D&C)贪心教室调度问题背包问题集合覆盖问题 动态规划背包问题旅游行程最优化 遇到问题时, 如果不确定该如何 高效…

IDEAPyCharm安装ProxyAI(CodeGPT)插件连接DeepSeek-R1教程

背景:最近DeepSeek比较火嘛,然后在githup上也看到了GitHub Copilot,就想着现在AI的准确率已经可以提高工作效率了。所以从网上找了一些编程插件,发现Proxy支持的模型比较多,通用性和适配性比较好。所以本文记录一下pro…

基于javaweb的SSM+Maven幼儿园管理系统设计和实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

Java-Lambda表达式详解

引言:为什么需要 Lambda 表达式? 在 Java 8 之前,处理需要传递代码块的场景(如事件监听、线程任务)通常依赖匿名内部类。这种方式代码冗余,可读性差。例如: // 传统匿名内部类实现 Runnable n…