解决方法一
- 找到你的my.ini文件,用notepad++打开,在右下角看保存
编码格式
是不是ANSI
,如果不是,则在工具栏找到编码,改成ANSI
,保存。 - 打开任务管理器,看是否有
mysqld
这个进程,如果之前启动失败的话,这里的状态可能会是“启动”(表示它在启动过程中,一般会卡在这里,启动不了),并不是“已启动”,所以我们要先结束
这个进程,再去重新启动
mysql服务。
启动mysql服务的命令: net start mysql
my.ini文件存放位置:C:\ProgramData\MySQL\MySQL Server 5.7,如果找不到ProgramData文件夹,那么打开文件资源管理器–>查看–>勾选展示隐藏的项目。
解决方法二
- cmd进入mysql的bin目录下,执行
mysqld --console
,查看日志,找到错误原因,如果日志中存在
[ERROR]Can't start server: Bind on TCP/IP port: No such file or directory
[ERROR] Do you already have another mysqld serverrunning on port: 3306 ?
[ERROR] Aborting
那就是3306的端口被其他服务占用了,停掉占用的进程就行了。 - cmd执行
netstat -ano | findstr "3306"
,可以查找到端口号中包含"3306"的端口占用情况,如下图所示,从而得知占用3306端口的pid是4300。
- 我们可以直接通过PID杀死进程,但保险起见还是看一下这个进程是否有用,cmd执行
tasklist | findstr "4300"
查看占用该端口的进程。(显示mysqld.exe是因为我已经成功启动了,此篇博文是记录解决过程的)
- cmd执行
taskkill /f /t /im mysqld.exe
,杀死占用端口的进程;
或执行:taskkill -PID 4300 -F
,使用PID杀死进程,其中 /f 表示强制关闭该进程;
或打开任务管理器,找到进程对应的服务名称,结束任务。(因为我已经成功启动,所以我的服务名称也是mysqld.exe,具体的服务名称看上图最左边的内容) - cmd执行
net start mysql
,重新启动mysql服务。