Mysql启动报错:本地计算机上的mysql服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止

Mysql启动报错:本地计算机上的mysql服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止

文章目录

  • `Mysql`启动报错:本地计算机上的`mysql`服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止
    • [1. 备份`mysql`的`data`文件夹](#1. 备份mysqldata文件夹)
    • [2. 重新构建 `Windows`的`Mysql` 服务](#2. 重新构建 WindowsMysql 服务)
      • [2.1 管理员权限进入`CMD`](#2.1 管理员权限进入CMD)
      • [2.2 删除 `Mysql` 服务](#2.2 删除 Mysql 服务)
    • [3. 不指定配置文件导致的后果](#3. 不指定配置文件导致的后果)
      • [3.1 新创建了`Mysql`服务](#3.1 新创建了Mysql服务)
      • [3.2 新建用户](#3.2 新建用户)
      • [3.3 无法生效配置文件](#3.3 无法生效配置文件)
    • [4. 总结](#4. 总结)
    • [5. 参考博客](#5. 参考博客)

背景:在修改了 my.ini 配置之后,重启 WindowsMysql 服务后,遇到的mysql启动报错。

1. 备份mysqldata文件夹

Tips: 如果你是选择默认安装,一般 Mysqldata 文件夹路径在 C:\ProgramData\MySQL\MySQL Server 8.0\Data

  • Mysql 默认安装时,会有两个关键路径 (C:\ProgramData\MySQL\MySQL Server 8.0C:\Program Files\MySQL\MySQL Server 8.0)
  • 这两个路径 前者是 数据库数据,配置文件,数据库日志Mysql 核心数据存储地,后者是 Mysql 软件本身,即提供服务的程序。
  • 如果你不想要丢失核心数据,请一定要备份好 data 文件夹

如果你没有做好 mysql data 文件夹备份操作,请不要执行以下操作

2. 重新构建 WindowsMysql 服务

2.1 管理员权限进入CMD

Step-1:Win + s ,输入cmd

Step-2:右键 命令提示符,选择以管理员身份运行

Step-3: 检验是否是以 C:\Windows\system32> 开头,如果是,则说明以管理员权限身份运行打开成功

2.2 删除 Mysql 服务

Step-1: 删除 MySQL 服务

shell 复制代码
$ mysqld --remove mysql

Step-2: 重新安装 Mysql服务,并指定配置文件路径

shell 复制代码
$ mysqld --install MySQL80 --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini"

Step-3:如果出现重复提示可以在 Windows中注销该服务

重复提示

删除服务

shell 复制代码
$ sc delete mysql

Step-4: 再次执行重新安装 Mysql服务,并指定配置文件路径

得到结果

Step-5:win + s 输入 服务

Step-6: 找到刚刚注册的 MySQL81服务

现在你就可以随意启动这个服务了,他继承了之前数据库的一切配置,此时,打开 navicat 进行连接,一切数据还在。

检查配置文件路径

shell 复制代码
$ SELECT variable_path,COUNT(*) FROM performance_schema.variables_info WHERE variable_path<>''  GROUP BY variable_path;

好!是想要的配置文件路径,没跑了!

3. 不指定配置文件导致的后果

Tips: 以下篇幅都是在记录坑点,或许你有一天也会遇到,希望本博客能够给你带来思路的启迪;

3.1 新创建了Mysql服务

​ 如果你执行了如下操作:

Tips:初看没有什么问题,Windows 会告诉你正确的结果,但是 Mysql 会给你在路径 C:\Program Files\MySQL\MySQL Server 8.0 下,建立一个 data 文件夹

​ 这相当于新建了一个 MySQL 的数据存放地址,也就意味着,你之前工作过的数据库和表 找不到了,这是一个全新的数据库,不得不说,这是一个沮丧的事情,但是更加糟糕的还不在于此。

3.2 新建用户

​ 这时,你进入MySQL数据库输入以下指令

shell 复制代码
$ mysql -uroot -p

​ 系统提示你输入密码,你会发现,你之前保存的密码已经不见了,这个时候相当于一个新的用户,你可以直接不输入密码按Enter即可进入;

​ 但是使用第三方软件时,必须要求数据库有密码,会出现 Access denied for user 'root'@'localhost' (using password:YES) 报错,于是我们必须设置 MySQL 密码。

shell 复制代码
$ set passeord for root@localhost=password('root'); (MySQL 5.7 可以用)

​ 如果你是 8.0 版本及以上用户,会提示报错 ERROR 1064 (42000) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'password('root')' at line 1,可以使用以下指令解决问题。

shell 复制代码
$ ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

​ 刷新权限(注意结尾有分号),然后回车。

shell 复制代码
$ flush privileges; 

​ 测试是否成功:输入之前第一步输入过的 mysql -uroot -p,并回车,这个时候一样会要求我们输入密码,接下来我们输入 刚刚设置好的密码,并回车,出现下图结果即为成功。

Tips: 这个时候你很疑惑,为什么这个流程像是 Mysql卸载了重装??但是这个好像比重装更加糟糕,接下来的篇章你会看到问题所在。

3.3 无法生效配置文件

当你想要检查一下刚刚新建的用户使用的数据库文件路径的时候,最糟糕的事情来了,你无法让更改的 my.ini 配置文件生效。

使用指令

shell 复制代码
$ show variables like '%datadir%'

你会发现默认数据存储路径如下,但是我记得我以前的数据库存储路径在 C:\ProgramData\MySQL\MySQL Server 8.0,同时我的配置文件也在 C:\ProgramData\MySQL\MySQL Server 8.0 路径下。

这个时候,冲突发生了!

当你修改配置文件 my.ini 中的 datadir 想要重新自定义数据库存储路径时,保存后,重复上述指令,你会发现,你的修改没有变化!

这时应该意识到 是不是加载错误了 my.ini 配置文件?

使用指令 MySQL8.0 专用指令,如果是其他版本的 MySQL 建议百度搜索,如何检查MySQL加载的配置文件路径。

shell 复制代码
$ mysql> SELECT variable_path,COUNT(*) FROM performance_schema.variables_info WHERE variable_path<>''  GROUP BY variable_path;

你会得到

shell 复制代码
$ Empty set (0.00 sec)

这麻烦就大了,说明**你没有配置。。**这意味着你不知道他的默认值,无法修改配置文件,导致你几乎丧失权限。如果你是一个普通的开发者,只是想要完成任务,这可以忍受,如果你是一个专业的开发者,那么几乎完全无法忍受不能操作配置文件,这给程序带来了极大的不确定性。

如果是正常的,应该会得到如下正确示例

Tips: 无法修改配置文件意味着什么?

  • 意味着 MySQL的某些限制你无法修改,比如最短响应时间
  • 意味着你无法根据个人程序对MySQL 进行个人化改造

4. 总结

对于本次事件,我个人的感觉是 `Windows` 的某些服务损坏了,并不是 `Mysql` 的问题,但是`windows` 几乎能够让你找不出错误来,只能说看了很多解决方案,被坑了,不能简单的进行 `mysqld --initialize` 这个会坑死人的。

收获:

  • 至少收获了在 WindowsMysql 的配置路径区别
  • Windows 删除服务,注册服务
  • Mysql 数据库 data 文件夹重定向
  • Mysqlwindows 的配置检查

5. 参考博客

  1. 【解决】mysql本地计算机上的MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止_本地计算机 上的 mysql 服务启动后停止。某些服务在未由其他服务或程序使用时将自-CSDN博客

  2. 完美解决MySQL ERROR:Access denied for user root@localhost (using password:YES)_access denied for user 'root'@'localhost' (using p-CSDN博客

  3. 【完美解决】mysql启动不了:本地计算机上的MySQL服务启动后停止_本地计算机上的mysql服务启动后停止 某些-CSDN博客

  4. windows 本地安装的mysql 查找配置文件,my.cnf,my.ini位置的方法-CSDN博客

  5. mysql 数据文件夹 data 的设置与移动【windows | 实测】 - 知乎 (zhihu.com)

  6. 我无法在%ProgramData中找到我的MySQL文件夹%ProgramData% - VoidCC

  7. (7 封私信 / 80 条消息) 有没有大佬知道ProgramData文件里没有MySQL文件是怎么回事啊? - 知乎 (zhihu.com)

  8. 安装MySQL遇到的一下问题和细节_为什么program files和programdata中都有mysql-CSDN博客

  9. 关于修改MySQL数据存储路径,超详细!!!_更改mysql数据库存储位置-CSDN博客

  10. MySQL如何找到使用的是哪个配置文件?-腾讯云开发者社区-腾讯云 (tencent.com)

  11. 新特性解读 | MySQL 8.0 轻松改配置,云上友好 - MySQL分布式中间件DBLE - SegmentFault 思否

  12. Windows环境下手动启动、停止MySQL服务. 命令行启动、停止MySQL服务. 查找MySQL安装目录._启动与停止mysql的命令是是-CSDN博客)

  13. MySQL 服务正在启动 . MySQL 服务无法启动 服务没有报告任何错误 解决方案_mysql 服务正在启动 . mysql 服务无法启动。 服务没有报告任何错误。-CSDN博客

  14. 修改MySql8.0的数据库默认存储位置_mysql8.0 数据库指定数据库存放位置怎么设置-CSDN博客

  15. net start mysql MySQL 服务正在启动 . MySQL 服务无法启动。 服务没有报告任何错误。_net start mysql无法启动-CSDN博客

  16. 关于修改MySQL数据存储路径,超详细!!!_mysql_Wang_JR1229-GitCode 开源社区 (csdn.net)

  17. mysql 查找配置文件位置方法_查看mysql配置文件位置-CSDN博客

  18. mysql启动报错:本地计算机上的mysql服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止_本地计算机上的mysql服务启动后停止某些服务在未有其他服务或程序使用时将自动停止-CSDN博客

  19. 在 Windows 系统中删除「服务」的 4 种方法_windows卸载任务管理器的服务-CSDN博客

  20. windows server mysql错误1053 服务没有及时响应启动或控制请求_mob64ca12d5604e的技术博客_51CTO博客

  21. 如何解决本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止(如果你在网上找了方法都不行,可以试试这个)-CSDN博客

相关推荐
是程序喵呀6 分钟前
MySQL备份
android·mysql·adb
指尖上跳动的旋律13 分钟前
shell脚本定义特殊字符导致执行mysql文件错误的问题
数据库·mysql
一勺菠萝丶24 分钟前
MongoDB 常用操作指南(Docker 环境下)
数据库·mongodb·docker
m0_748244831 小时前
StarRocks 排查单副本表
大数据·数据库·python
C++忠实粉丝1 小时前
Redis 介绍和安装
数据库·redis·缓存
wmd131643067122 小时前
将微信配置信息存到数据库并进行调用
数据库·微信
是阿建吖!2 小时前
【Linux】基础IO(磁盘文件)
linux·服务器·数据库
凡人的AI工具箱2 小时前
每天40分玩转Django:Django国际化
数据库·人工智能·后端·python·django·sqlite
ClouGence2 小时前
Redis 到 Redis 数据迁移同步
数据库·redis·缓存
m0_748236582 小时前
《Web 应用项目开发:从构思到上线的全过程》
服务器·前端·数据库