Mysql
启动报错:本地计算机上的mysql
服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止
文章目录
- `Mysql`启动报错:本地计算机上的`mysql`服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止
-
- [1. 备份`mysql`的`data`文件夹](#1. 备份
mysql
的data
文件夹) - [2. 重新构建 `Windows`的`Mysql` 服务](#2. 重新构建
Windows
的Mysql
服务) -
- [2.1 管理员权限进入`CMD`](#2.1 管理员权限进入
CMD
) - [2.2 删除 `Mysql` 服务](#2.2 删除
Mysql
服务)
- [2.1 管理员权限进入`CMD`](#2.1 管理员权限进入
- [3. 不指定配置文件导致的后果](#3. 不指定配置文件导致的后果)
-
- [3.1 新创建了`Mysql`服务](#3.1 新创建了
Mysql
服务) - [3.2 新建用户](#3.2 新建用户)
- [3.3 无法生效配置文件](#3.3 无法生效配置文件)
- [3.1 新创建了`Mysql`服务](#3.1 新创建了
- [4. 总结](#4. 总结)
- [5. 参考博客](#5. 参考博客)
- [1. 备份`mysql`的`data`文件夹](#1. 备份
背景:在修改了
my.ini
配置之后,重启Windows
的Mysql
服务后,遇到的mysql
启动报错。
1. 备份mysql
的data
文件夹
Tips:
如果你是选择默认安装,一般Mysql
的data
文件夹路径在C:\ProgramData\MySQL\MySQL Server 8.0\Data
Mysql
默认安装时,会有两个关键路径 (C:\ProgramData\MySQL\MySQL Server 8.0
和C:\Program Files\MySQL\MySQL Server 8.0
)- 这两个路径 前者是 数据库数据,配置文件,数据库日志 等
Mysql
核心数据存储地,后者是Mysql
软件本身,即提供服务的程序。- 如果你不想要丢失核心数据,请一定要备份好
data
文件夹
如果你没有做好 mysql
的data
文件夹备份操作,请不要执行以下操作
2. 重新构建 Windows
的Mysql
服务
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` 这个会坑死人的。
收获:
- 至少收获了在
Windows
中Mysql
的配置路径区别 Windows
删除服务,注册服务Mysql
数据库data
文件夹重定向Mysql
在windows
的配置检查
5. 参考博客
-
【完美解决】mysql启动不了:本地计算机上的MySQL服务启动后停止_本地计算机上的mysql服务启动后停止 某些-CSDN博客
-
(7 封私信 / 80 条消息) 有没有大佬知道ProgramData文件里没有MySQL文件是怎么回事啊? - 知乎 (zhihu.com)
-
安装MySQL遇到的一下问题和细节_为什么program files和programdata中都有mysql-CSDN博客
-
新特性解读 | MySQL 8.0 轻松改配置,云上友好 - MySQL分布式中间件DBLE - SegmentFault 思否
-
Windows环境下手动启动、停止MySQL服务. 命令行启动、停止MySQL服务. 查找MySQL安装目录._启动与停止mysql的命令是是-CSDN博客)
-
MySQL 服务正在启动 . MySQL 服务无法启动 服务没有报告任何错误 解决方案_mysql 服务正在启动 . mysql 服务无法启动。 服务没有报告任何错误。-CSDN博客
-
net start mysql MySQL 服务正在启动 . MySQL 服务无法启动。 服务没有报告任何错误。_net start mysql无法启动-CSDN博客
-
关于修改MySQL数据存储路径,超详细!!!_mysql_Wang_JR1229-GitCode 开源社区 (csdn.net)
-
windows server mysql错误1053 服务没有及时响应启动或控制请求_mob64ca12d5604e的技术博客_51CTO博客
-
如何解决本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止(如果你在网上找了方法都不行,可以试试这个)-CSDN博客