记宝塔面板MySQL启动失败问题之解决


预先声明:我基本是小白状态,刚刚开始折腾,如有问题还请多多指教,望以下内容或许能为您解决问题提供参考

我用一台小米6X通过Linux deploy实现Ubuntu 18.04的安装,安装了宝塔面板,在启动MySQL5.7.44的时候遇到了报错无法启动的问题,在此我尝试了如下三种办法最终解决了问题:


  • 开放3306端口
  • 更改MySQL目录的所属用户
  • 下载官方提供的检查脚本,并检查,上网搜索发现“网络权限不足”的说法并成功解决

其中,前两个方法受宝塔面板Mysql无法正常启动的解决方法 - Linux面板 - 宝塔面板论坛 (bt.cn)宝塔面板Mysql 5.6版本无法正常启动的解决方法-腾讯云开发者社区-腾讯云 (tencent.com)二文启发


开放3306端口

这里由于我是Linux deploy实现的Linux,正常通过宝塔面板的“安全”页开放端口会遇到无法打开防火墙的问题,事实上用终端打开也是这样的问题。

宝塔面板的报错我没有仔细看,但是在终端里的报错是Running in chroot, ignoring request.,最终我的解决方法是使用servicectl开启firewalld.service

这里我遇到很多问题但在此不多赘述(主要是servicectl各种报错),如果大家遇不到这些问题,那么可以正常遵循参考文章:解决chroot运行的系统无法使用systemd服务 - 兮陌 (simaek.com)

最终,在终端里打开了firewall之后,再在宝塔面板的“安全”页中添加3306端口

(我输入servicectl start firewalld后终端会卡住,cmd和powershell在ssh连接下都是,但是此时另开一个终端并用firewall-cmd --state命令检查,显示running,即firewall正在运行,若是终止servicectl start firewalldfirewall会停止运行,我还没找到解决方法,不过虽然之后防火墙会下线,但是再次正常开启也是可以的,并且防火墙下线不会影响已经成功启动的MySQL)

虽然但是,我开放3306端口后并没有解决问题

更改MySQL的所有用户

这个参考之前的两篇文章就行,我是完全按照文章的操作执行的:宝塔面板Mysql无法正常启动的解决方法 - Linux面板 - 宝塔面板论坛 (bt.cn)宝塔面板Mysql 5.6版本无法正常启动的解决方法-腾讯云开发者社区-腾讯云 (tencent.com)

完成以上操作仍没有解决问题

脚本检查并发现问题

具体使用检查脚本的方法在开头提到的两篇文章里,并注意:
复制文章里的代码时候,我是遇到了sh: sql-repair.shwget: No such file or directory的报错,不过无妨,把sh的那段命令重新敲一遍就好了(不过我也不知道为什么我这里脚本文件运行一遍就没了)

不同于两篇文章中作者遇到的问题,我的报错大概有(截取):

2024-08-06T07:48:52.363247Z 0 [Note] Skipping generation of RSA key pair as key files are present in data directory.    
2024-08-06T07:48:52.363835Z 0 [Note] Server hostname (bind-address): '*'; port: 3306                                    
2024-08-06T07:48:52.364258Z 0 [Note] IPv6 is not available.                                                             
2024-08-06T07:48:52.364360Z 0 [Note]   - '0.0.0.0' resolves to '0.0.0.0';                                               
2024-08-06T07:48:52.364432Z 0 [ERROR] Failed to create a socket for IPv4 '0.0.0.0': errno: 13.                          
2024-08-06T07:48:52.364489Z 0 [ERROR] Can't create IP socket: Permission denied                                         
2024-08-06T07:48:52.364541Z 0 [ERROR] Aborting    

我根据以上截取的内容的倒数第三个报错搜索到这篇文章:Failed to create a socket for IPv4 ‘0.0.0.0’: errno: 13并根据其中提出的方法成功解决问题,MySQL成功启动

补充:

虽然并不知道有没有用,但是我把面板里MySQL管理的“性能调整”一项的“优化方案”这一项设成了“1-2G”,在开放端口成功之前就已经设置了。

关于检查脚本:(这部分是我突发奇想写上的,应该对各位没什么用)

其内容如下:

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

DATA_PATH=$(cat /etc/my.cnf|grep datadir|awk '{print $3}')
echo "=========================================================================================="
cat /www/server/data/*.err|grep -i -C 10 error
echo $DATA_PATH
echo "=========================================================================================="
echo "请将以上错误信息截图发至论坛寻求帮助"

rm -f sql-repair.sh

通过分析这个脚本可以发现,它先是读取了my.cnf(这是MySQL在Linux系统下的配置文件),找到了其中datadir = xxxxxx,我的电脑上是datadir = /www/server/data这一行并将DATA_PATH赋为——以我的为例——/www/server/data

接着其在输出一行=后,输出/www/server/data/*.err,我猜是MySQL的报错文件但我不知道grep命令的-C 10参数是为什么

-C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
参考:Linux grep 命令

这样脚本也就是从大量内容中找出了包含error的行。并注意,每行前的日期和时间应该是UTC时间,注意转化成北京时间


望以上内容或许能为您提供一定的解决问题的参考
如有错误还请多指教

  • 13
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!对于宝塔面板MySQL 启动失败问题,可能有多种原因导致。以下是一些常见的解决方法: 1. 检查配置文件:确保 MySQL 的配置文件(一般是 my.cnf)中的参数设置正确。特别注意数据目录、日志文件和临时文件的路径是否正确。 2. 查看日志:MySQL 启动失败时,可以查看错误日志文件以获取更多信息。日志文件的位置通常是在 /var/log/mysql/ 目录下,查找最新的错误日志文件,打开并逐行检查是否有明显的错误信息。 3. 检查端口冲突:确保 MySQL 使用的端口没有被其他程序占用。可以使用 netstat 命令或者工具(如 lsof)来检查端口占用情况。 4. 修改权限:检查数据目录和日志文件的权限是否正确设置。一般来说,MySQL 数据目录应该具有 mysql 用户的所有权,并且权限设置为 700。日志文件也应该具有相应的权限。 5. 检查内存使用:如果服务器内存不足,可能会导致 MySQL 启动失败。可以使用 free 命令或 top 命令来查看内存使用情况,如果内存不足,可以考虑增加服务器内存或优化 MySQL 的配置。 6. 升级或重装 MySQL:如果上述方法都无法解决问题,可以尝试升级 MySQL 版本或者重新安装 MySQL。确保备份重要数据后再进行操作。 希望以上方法能帮助您解决问题。如果问题仍然存在,请提供更多详细的错误信息,以便我们更好地帮助您解决问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值