我一直在 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(以及 killall mysql 只是为了好玩)来杀死 mysql 进程。通过这些尝试没有找到进程。
我不知道它是否相关,但即使使用 super 用户我也无法打开(在 vim 中)或查看 mysqld.sock 文件(权限被拒绝)。
最佳答案
你用过吗
killall mysqld
杀死服务器而不是仅仅结束服务,然后启动 MySQL 服务?
或者你可以尝试删除 mysql.sock 使用
rm /var/run/mysqld/mysqld.sock
然后您只需要通过启动服务或运行来再次运行 MySQL 服务器
mysqld
它应该为自己创建一个新的/var/run/mysqld/mysqld.sock 并且一切都会顺利进行。 只是一个想法:这可能是因为计算机没有正确关闭电源,或者 MySQL 有点困惑。
关于MySQL 突然停止 LAMP 堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13215373/