MYSQL数据库突然消失
之前在下载mysql时发现没有my.ini。考虑到后面的项目可能需要,看着教程自己创建了一次,当时就发生了所有数据库消失的问题,近几天这种事件又发生了。我在服务里看到我有mysql和mysql57两个服务,启动一个的时候另一个就无法启动,发现有的数据库在mysql57里。mysql57是网络登录 mysql是本地系统。
1 my.ini没有配置文件的原因
之前一直以为配置文件是在MYSQL下载的文件地址里,今天在排错时发现是在ProgramData存放数据的MYSQL文件里
2 新建my.ini后数据库消失的问题:
可能是因为MySQL的配置文件(my.ini或my.cnf)中的datadir参数指向了错误的目录。当手动创建my.ini时,如果没有正确设置datadir,MySQL可能会使用默认的数据目录,而这个目录可能没有之前的数据库文件,导致数据库“消失”了。
3 mysql和mysql57问题
启动一个服务时,另一个无法启动,这可能是因为两个服务都试图监听相同的端口(默认3306),导致端口冲突。此外,每个服务可能使用不同的数据目录和配置文件,因此启动不同的服务会加载不同的数据库实例。
解决方案:
1. 确认服务配置信息
查看服务属性:
-
打开「服务」管理器,右键点击
MySQL57
和MySQL
服务,选择「属性」。 -
记录两者的「可执行文件路径」,找到
--defaults-file
(配置文件路径)和--datadir
(数据目录路径)。
2. 停止并禁用冗余服务
保留一个服务:
-
以管理员身份运行CMD,停止并删除另一个服务:
sc stop MySQL # 停止服务
sc delete MySQL # 删除服务(谨慎操作!)
3. 统一配置文件与数据目录
检查 my.ini
配置:
-
打开保留服务的配置文件。
-
确认以下关键参数:
[mysqld]
datadir=D:/MySQL/Data # 确保指向实际数据目录
port=3306 # 避免端口冲突
4. 解决端口冲突
修改端口号:
-
如果需同时运行两个服务,编辑其中一个的
my.ini
,修改端口:
[mysqld]
port=3307
最后重启。