小皮面板MySQL无法启动该如何排查
照着排查一遍,你基本能自己定位小皮面板 MySQL 起不来的原因,并把服务重新拉起来。
第一步:找到 MySQL 错误日志,先拿报错原文
这一步要做的就是别瞎点「启动」,先把 MySQL 自己写的报错读出来,拿到关键词再去搜。打开 phpStudy v8.1(小皮面板 Windows 版)主界面,左侧菜单点「软件管理」,找到 MySQL 那一行(比如 MySQL 5.7.26),点它右侧的「日志」按钮,会直接弹出日志文件。日志的物理路径一般在:
D:\phpstudy_pro\Extensions\MySQL5.7.26\data\你的计算机名.err
如果你是 Linux 版小皮面板,路径在:
/www/server/data/你的主机名.err
重点是搜这几个关键词:InnoDB、Cannot create、Permission denied、Address already in use、error。把第一段红字报错记下来,后面几步基本就是按它走。
注意:日志文件可能是空的,说明 MySQL 根本没读到配置就退出了,直接跳到第三步手动启动。
第二步:确认 3306 端口是不是被别的程序占了
这一步是排查最常见的原因——端口冲突,做完你能确认是「被别人占了」还是「MySQL 自己的问题」。按 Win + R 输入 cmd,执行:
netstat -ano | findstr :3306
如果输出里有 LISTENING,看最后一列的 PID,再执行:
tasklist | findstr "PID号"
看到是 mysqld.exe 以外的程序(常见的是别的 MySQL 实例、宝塔残留、某些开发工具的数据库),就是端口冲突。在 phpStudy 里点 MySQL 行右侧的「配置」,把 port=3306 改成 3307,保存后再点「启动」。
Linux 下用 ss -lntp | grep 3306 看占用进程。
第三步:用命令行手动启动,看完整报错
这一步绕过面板,直接让 MySQL 前台运行,报错会实时打在屏幕上。命令行进到 bin 目录:
cd D:\phpstudy_pro\Extensions\MySQL5.7.26\bin
mysqld --defaults-file="D:\phpstudy_pro\Extensions\MySQL5.7.26\my.ini" --console
Linux 下用:
/www/server/mysql/bin/mysqld --defaults-file=/etc/my.cnf --user=mysql
这时屏幕上滚出来的第一段错误就是根因。比如 InnoDB: log file .\ib_logfile0 is of different size、Can't open the mysql.plugin table、Permission denied,对应下面第四步处理。
注意:命令行模式关掉窗口就会停服务,这一步只是排查用,别当正式启动方式。
第四步:按报错对症处理
- 配置文件路径写错:打开
my.ini,检查basedir和datadir两行是不是当前实际路径,换过盘符或搬过目录的,这里经常还是老地址。 - ib_logfile 大小不一致:停掉所有 mysqld 进程后,把
data目录里的ib_logfile0、ib_logfile1改名备份(别直接删),再启动,MySQL 会重建。 - Linux 权限报错:执行
chown -R mysql:mysql /www/server/data,再chmod 755 /www/server/data。 - 磁盘满了:Windows 看 C 盘剩余空间,Linux 执行
df -h,data 目录所在分区至少要留几百 MB。 - 服务残留冲突:
Win + R输入services.msc,找有没有叫 MySQL 的 Windows 服务,有就先停止并禁用,再用面板启动。
第五步:data 目录损坏时的最后手段
如果日志明确说表空间损坏、mysql 库读不出来,就把面板里的 MySQL 停掉,整目录备份再重建:
move D:\phpstudy_pro\Extensions\MySQL5.7.26\data D:\data_bak
D:\phpstudy_pro\Extensions\MySQL5.7.26\bin\mysqld --initialize-insecure --console
执行完再点面板「启动」,root 密码会变空,登录后立刻改密码。
注意:
--initialize-insecure等于全新建库,原来的数据库文件只有靠备份目录里拷回来,动手前必须备份整个data。
小结
- 先看
data目录下的.err日志,拿第一段报错再决定下一步。 - 端口冲突用
netstat -ano | findstr :3306定位,改my.ini的port到 3307 最快。 - 用
mysqld --console前台启动能看到面板里看不到的完整报错。 my.ini的basedir、datadir路径错位是搬目录后最常见的坑。- 重建
data目录是最后手段,操作前必须整目录备份。
原文链接:https://www.gj0.com/thread-274.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。