起因
本人在运行项目的时候,有些项目新旧不一致,导致我自己装了两个版本的mysql,一个57一个80,为了避免冲突,mysql57给配置的是3306端口,mysql80配置的是3307端口,刚装一段时间,没有任何影响,但是后来一段时间后,要演示内容的时候发现,用不了了,再一看服务管理中只有mysql80在运行,但是mysql57不见了
当我使用mysql -uroot -p然后输入密码,弹出的报错是:
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
因为服务没启动,甚至没安装上,所以导致不能够启动和连接
解决方案
我这里是默认安装的Mysql所以,路径是在C:\Program Files\MySQL\MySQL Server 5.7
如果数据库有重要数据,建议先备份该安装目录下的data文件
方案1
如果你安装目录下有ini文件
按win标键,输入cmd,以管理员身份运行
然后切换到mysql的安装目录下的bin目录,如果你也是默认安装,可以输入以下命令cd C:\Program Files\MySQL\MySQL Server 5.7\bin
切换到对应目录后输入:
mysqld --install MySQL57 --defaults-file=C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
如果重新注册后,data文件丢失,记得在服务关闭的情况,将备份的data替换进去,然后解决了
方案二
如果在你安装目录下没有看到ini文件也不要太担心
依旧是按照方案一以管理员身份运行cmd,然后切换到cd C:\Program Files\MySQL\MySQL Server 5.7\bin目录
输入mysqld --install MySQL57他会自动找到ini文件
输入后应该会给你一个反馈

告诉你安装成功,此时输入
net start mysql57来启动服务
然后再试试登录
如果还是不行,出现了以下报错

那么可以试试卸载服务后重新安装服务
在当前报错的界面输入mysqld --remove MySQL57
然后切换到 C:\Program Files\MySQL\MySQL Server 5.7\bin目录,如果这个以管理身份运行的cmd一直没有关闭的话,应该是默认在该路径的
输入mysqld --initialize-insecure --console
输入之后,就会弹出很多条报错,也就是弹出诸多的warning,是正常现象,这一步会增加ini文件,此时再次输入mysqld --install MySQL57来安装服务,此时应该也会弹出successful,然后再启动服务
输入net start mysql57
此时应该启动成功
但是你会发现,用密码登录不上,因为重新安装后,密码默认是没有的,此时相当于重装了一次mysql但是没有密码
不输入密码直接登录进入mysql,然后输入ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';来改密码为123456,下次登录就可以了
此时使用show databases命令会发现,原本配置的数据库都丢了,此时不用慌,先停止服务'net stop mysql57'然后将刚刚的备份data文件夹替换到安装目录的data文件夹,就大功告成,然后再启动服务,数据库就回来了
如果看文章太快了,没有备份
不用惊慌,及时停止服务,然后在打开查看隐藏文件夹的选项的前提下,在C盘找到programdata文件夹,他是一个默认隐藏的文件夹,进入后,找到mysql文件夹夹,应该是C:\ProgramData\MySQL\MySQL Server 5.7目录下
把该目录下的data文件夹复制到安装目录下,然后再启动服务,就解决之前恢复数据库后,数据丢失的问题