MySQL 突然停止了 LAMP 堆栈

Posted

技术标签:

【中文标题】MySQL 突然停止了 LAMP 堆栈【英文标题】:MySQL suddenly stopped LAMP stack 【发布时间】:2012-10-24 07:13:30 【问题描述】:

我一直在 Ubuntu 设置中使用 LAMP 堆栈。

它一直工作正常,设置多个数据库一切正常,然后今天早上突然我开始从我正在使用的网页中收到数据库错误,然后尝试访问 phpMyAdmin 得到:

error #2002 Cannot log in to the mysql server

我进入 bash 提示符并尝试以 root 用户身份登录,看看发生了什么,我收到了类似的错误:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111) 

我检查了 mysql.sock 文件是否存在,在上述错误的指定路径中。权限在哪里都好,并且归mysql所有。我重置了权限以防万一,但仍然遇到同样的错误。

这是从 BASH 中看到的文件:

srwxrwxrwx 1 mysql mysql 0 Oct 21 05:10 mysqld.sock

我以为我会重新启动服务,但在尝试停止、启动或重新启动服务时遇到同样的错误。

这真的让我感到困惑,我不是 linux 或任何方面的专家,但不明白当我没有更改任何配置设置时会突然发生这种情况,并且在过去的几个月里它运行得非常好.

我尝试重新启动 Apache,但出现错误:

apache2: bad user name $APACHE_RUN_USER

我不认为这与 MySQL 的东西有关,但认为它可能涉及。 Apache 错误似乎更多地与设置有关,但知道我的运气很懒惰导致我忽略了导致一切崩溃的简单事情。

任何关于如何解决问题的帮助,更重要的是防止这种情况发生在未来将不胜感激。

我已经尝试了大多数由基本 Google 搜索返回的内容,并在此处查看。我还没有尝试删除和重新创建 sock 文件,但到目前为止大多数其他事情都没有奏效。

编辑:

我只是想补充一点,Apache 服务器仍然运行良好,没有任何问题,即使我在尝试停止并重新启动它时确实遇到了错误。不依赖 MySQL 的页面仍然可以正常加载。

我还尝试通过搜索 PID 以及下面的建议 killall mysqld 杀死 mysql 进程(以及 killall mysql 只是为了踢球)。通过这些尝试未找到任何进程。

我不知道它是否相关,但即使使用超级用户,我也无法打开(在 vim 中)或查看 mysqld.sock 文件(权限被拒绝)。

【问题讨论】:

service mysql restart 到底给出了什么错误? service mysql status 呢?消息日志中是否显示任何内容? (抱歉,我对 SUSE 比较熟悉,所以我是 /var/log/messages 您是否尝试过阅读错误日志以了解它试图告诉您的内容? mysqld restart (和其他变体)给出了相同的 mysql.sock 错误。如下详述,我最终删除并再次启动该服务,它似乎起到了作用。应该首先尝试一下。我没有检查错误日志,但现在要查看它 【参考方案1】:

您是否尝试过使用

killall mysqld

杀死服务器而不是仅仅结束服务,然后启动 MySQL 服务?

或者您可以尝试使用删除 mysql.sock

rm /var/run/mysqld/mysqld.sock

然后您只需要通过启动服务或运行来再次运行 MySQL 服务器

mysqld

它应该为自己创建一个新的 /var/run/mysqld/mysqld.sock 并且一切都应该顺利。 只是一个想法:这可能是因为计算机没有正确关闭电源,或者 MySQL 只是有点混乱。

【讨论】:

我确实尝试过这个并想出了:找不到进程。我应该补充一下,我查看了 PID 列表,试图杀死任何挥之不去的东西,但那里什么也没有 我将此添加到原始问题中,因为这似乎对我不起作用。 好的。如何 rm'ing mysql.sock 并直接从命令行(我认为是'/etc/mysqld/mysqld')执行服务器以捕获发生的任何信息和错误。 mysqld 应该重新创建套接字文件。 这似乎成功了,你想把这个添加到你的答案中,我会检查它吗?【参考方案2】:

你有没有尝试重启mysql服务器

/etc/init.d/mysqld restart 
/etc/init.d/mysqld stop 
/etc/init.d/mysqld start

【讨论】:

【参考方案3】:

在 Ubuntu 中创建一个微实例交换空间

dd if=/dev/zero of=/swapfile bs=1M count=1024

mkswap /swapfile

交换/交换文件

【讨论】:

以上是关于MySQL 突然停止了 LAMP 堆栈的主要内容,如果未能解决你的问题,请参考以下文章

gulp,找不到命令 - 之前工作正常,然后突然停止

20200420关于mysql突然停止服务的记录

docker停止mysql后容器消失

调试器不会因错误而停止

MySQL服务(如何安装启动停止MySQL服务)

MySQL服务(如何安装启动停止MySQL服务)