首页 > 数据库 >mysql服务无法启动

mysql服务无法启动

时间:2024-12-04 18:11:45浏览次数:6  
标签:启动 mysql 数据库 sql 无法 data 备份

问题场景

当我打开navicat连接数据库的时候报错,说不能连接到数据库,如下图所示。

我第一时间想到mysql服务可能没有启动,于是我打开任务管理器查看服务,果然发现mysql服务没有启动。

然后我直接右键点击启动发现启动不了,于是我用管理员运行cmd命令行窗口输入net start mysql启动mysql,结果还是启动不了,如下图所示。

然后我就去网上查找攻略,看看这怎么回事。我在网上找到几种方法,如下:

方法一

以管理员身份打开cmd,进入到mysql的bin目录下,然后依次执行命令

// 命令1
mysqld -remove MySQL
// 命令2
mysqld -install
// 命令3
mysqld --initialize-insecure
// 命令4
net start mysql

我执行后的效果如下图所示。

方法一失败。

方法二

同样也是打开命令行窗口,输入命令查看3306端口是否被占用。

netstat -ano | findstr :3306
或
netstat -ano

如果端口被占用就将对应的进程杀掉。

taskkill /f /pid xxxx

其中xxxx对应进程的pid。

我执行完netstat -ano | findstr :3306后并没有找到有进程占用了3306端口,执行了netstat -ano查看了完整的进程信息也并没有找到有进程占用3306端口。

我在博客园中找到博客[MySQL] “MySQL 服务无法启动”原理及解决方法就是使用该方法解决,但是对我并没有用,呜呜呜;(

方法三

网上还有种方法说是配置文件的问题,找到my.ini文件。

查看有没有错误,正确的配置应该如下。

[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=D:\Program Files\MySQL\MySQL Server 8.2
# 设置mysql数据库的数据的存放目录
datadir=D:\Program Files\MySQL\MySQL Server 8.2\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4

但是自从我上次正常使用并没有修改过配置文件,所以这个方法也没啥用。

可以试试用记事本打开后另存为,格式选择ANSI,然后重新启动mysql试试。

方法四

来到mysql的安装目录下,将data文件夹进行备份,然后清空data目录的数据。

然后以管理员身份打开cmd,就进入到mysql的bin目录下。

执行命令

mysqld --initialize

执行完这条命令后,data文件夹会重新生成文件,先不管。

再次启动,发现启动成功。

然后输入命令net stop mysql停止mysql服务。

再将data目录的文件清空,然后将最开始备份的data文件复制进去,再次启动。

我这里又失败了。但是在博客【完美解决】mysql启动不了:本地计算机上的MySQL服务启动后停止 中有人用这个方法成功了。

最终解决方法

该方法比较麻烦,如果前面几个方法都不行的话可以尝试一下这个方法。

前面几步跟方法四一样。

来到mysql的安装目录下,将data文件夹进行备份,然后清空data目录的数据。

然后以管理员身份打开cmd,就进入到mysql的bin目录下。

执行命令

mysqld --initialize

执行完这条命令后,data文件夹会重新生成文件,先不管。

再次启动,发现启动成功。

在命令行窗口输入mysql -uroot -p启动mysql。这个时候会叫你输入密码,密码在刚才生成的data目录下,找到以电脑名.err的文件。

用记事本打开。

复制红框的密码,然后切换到命令行窗口鼠标右键粘贴回车就行了。

能正常使用,我们来修改一下数据库的密码。

还是在刚才的窗口输入下面的命令就能修改密码了。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

数据库是能够正常启动并使用了,但是以前的数据还没有备份回来,接下来我们来备份自己的旧数据。

由于在方法四中将旧数据直接覆盖data下的数据不能够正常启动,所以我想如何在mysql启动不了的情况下备份数据库,然后将数据重新导入到库中应该就能够解决问题了,所以有了该方法,但是这个方法比较麻烦,如果实在不行的话就用该方法吧。

该方法是用了博客mysql如何在无法启动的情况下进行数据恢复中提到的ibd转sql文件的方法。

其中提到了github上的一个项目,项目地址为:https://github.com/ddcw/ibd2sql?tab=readme-ov-file

进入到该项目,点击下载。

下载后解压,解压后的目录结构。

在该窗口按住shift点击鼠标右键,打开终端,输入以下命令。

python main.py 源ibd文件路径(例如: D:\xxxx.ibd) --sql --ddl > 目标sql文件路径(例如: D:\sql\xxxx.sql)

这里原路径我们找到最开始备份的data副本,找到你要备份的数据库(data中跟你的数据库同名的文件夹),进入到该文件夹下就有ibd文件,每个ibd文件对应数据库中的一张表。

我是将每个数据库下新建了一个sql文件夹,将执行后生成的sql文件放到sql目录下。

然后将你想要备份数据库的表一张一张备份就行了。

所有的数据备份好后打开navicat,新建连接,创建以前的数据库同名的新数据库,然后新建查询,将得到的sql文件内容复制进去全选运行就行了。

这里按道理来说是可以点击数据库右键运行sql脚本的,但是我运行后没有成功,如图。

数据库中的表创建好过后,启动用到该数据库的项目看能不能正常使用。

启动一个项目后,登录。

登录成功,数据成功备份。

标签:启动,mysql,数据库,sql,无法,data,备份
From: https://www.cnblogs.com/errors1/p/18586897

相关文章

  • nacos开启鉴权后,默认账号密码无法登录问题,解决方案
    Linux系统下,检查使用版本java-version,如果是openJDK1.8版本,那么可能存在openJDK本身缺少加密软件包。检查登录界面,控制台会出现,报错样式,如下图所示此时就可以判断,由于jdk版本的问题,导致默认账号密码无法登录。解决方法:升级JDK版本到openJDK17或改用oracleJDK1.8......
  • 还不懂操作系统?这个系列让你彻底明白!【01_启动】
    Hello,大家好!今天我将要写的这篇文章是关于操作系统的。我想把他做成一个系列,这只是第一篇,后面还会出更多的,内容将会涵盖,从按下电源开始引导到自己实现一个简单的操作系统。大家如果觉得不错。记得点个关注,专注这个专栏!你肯定能收获很多!彻底的理解操作系统到底是怎么搞的。(......
  • Redis7缓存介绍及在Window下配置启动过程
    Redis介绍Redis(RemoteDictionaryServer),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)......
  • 机械革命无线网卡ax200在liunx系统无法识别
    XucPan作者的原文地址机械革命无界14Pro安装ArchLinux记,感谢大佬分享,经原作者同意转载我是机械革命无界15Pro的本子,在win11上装ubuntu双系统中遇到ubuntu下无法识别wifi网卡,但是蓝牙正常使用,型号是intel的ax200,rfkill显示是Hard Blocked,dmesg显示的是rf_kill(radiodisa......
  • mysql 中count(*)和count(1)、count(0)谁的效率更高???
    在MySQL中,COUNT(*)、COUNT(1)和COUNT(0)在大多数情况下具有相似的性能表现。这是因为MySQL的查询优化器通常能够识别这些不同的计数方式并将其优化为相同的执行计划。具体来说:COUNT(*):计算表中的总行数。COUNT(1):计算表中非空值的数量,但由于 1 是一个常量且总......
  • 无法科学上网导致docker compose up -d报错,已解决
    MilvusMilvus是一款开源的向量数据库,具有高度的灵活性、稳定可靠性以及高速查询等特点。它支持针对TB级向量的增删改操作和近实时查询,适用于大规模向量数据的存储和检索。Milvus的官网:https://milvus.ioGithub上Milvus的链接:https://github.com/milvus-ioDockerDocker是......
  • Mysql 一主一从配置
    Mysql一主一从配置环境信息ip地址主机信息角色mysql版本192.168.1.19S600主8.0.40-0ubuntu0.20.04.1192.168.1.20H840从8.0.40-0ubuntu0.20.04.1本环境已完成2台Mysql单机安装,Mysql单机安装操作文档具体操作Mysql主机配置配置文件修改修改配置Mas......
  • Mycat2+Mysql一主一从实现读写分离配置
    Mycat2+Mysql一主一从实现读写分离配置前置配置Mysql一主一从搭建Mycat2环境搭建环境信息ip地址软件角色版本192.168.1.19Mysql主8.0.40-0ubuntu0.20.04.1192.168.1.19Mycat2——1.21-release-3-14192.168.1.20Mysql从8.0.40-0ubuntu0.20.04.1......
  • jenkins在windows os中启动slave node的快捷方法
    如果你把一台windows服务器作为了某个jenkins的slavenode,如果slavenode不稳定,经常offline,那么你如何快速的启动这台windowslavenode呢?最简单粗暴的方式就是:1.远程连接windowsserver2.进入到放jenkinsslavejar包的路径中3.按照jenkinsnode中的执行slavejavajar包的......
  • 为什么许多项目经理根本无法实现数字化转型?你做对了吗?
    在当今数字化时代,数字化转型对于项目经理而言至关重要。随着科技的飞速发展,企业越来越依赖数字化手段来提高效率、降低成本、增强竞争力。项目经理作为项目的核心领导者,其在数字化转型中的作用不可忽视。然而,当前许多项目经理却难以实现数字化转型,这一现象值得我们深入探讨。数......