elz*_*aer 4 mysql linux apache mysql.sock
我一直在 Ubuntu 设置上使用 LAMP 堆栈。
它一直工作正常,设置了多个数据库一切都很顺利,然后今天早上我突然开始从我正在使用的网页中收到数据库错误,然后尝试访问 PHPMyAdmin 得到:
error #2002 Cannot log in to the MySQL server
Run Code Online (Sandbox Code Playgroud)
我进入 bash 提示符并尝试以 root 用户身份登录,看看发生了什么,我收到类似的错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
Run Code Online (Sandbox Code Playgroud)
我检查了 mysql.sock 文件是否存在,在上面错误中的指定路径中。权限都很好,并且归 mysql 所有。我重置了权限以防万一,但仍然收到相同的错误。
这是从 BASH 中看到的文件:
srwxrwxrwx 1 mysql mysql 0 Oct 21 05:10 mysqld.sock
Run Code Online (Sandbox Code Playgroud)
我以为我会重新启动服务,但在尝试停止、启动或重新启动服务时出现相同的错误。
这真的让我感到困惑,我不是 Linux 或其他任何方面的专家,但不明白当我没有更改任何配置设置时,怎么会突然发生这种情况,而且在过去几个月里它运行得非常好。
我尝试重新启动 Apache,但出现错误:
apache2: bad user name ${APACHE_RUN_USER}
Run Code Online (Sandbox Code Playgroud)
我不认为这与 MySQL 的东西有关,但认为它可能涉及。Apache 错误似乎更多地与设置有关,但知道我的运气很懒,导致我忽略了一些简单的事情,导致一切崩溃。
任何有关如何解决问题,更重要的是防止将来发生这种情况的帮助将不胜感激。
我已经尝试了基本的谷歌搜索返回的大部分内容,并环顾四周。我还没有尝试删除并重新创建 sock 文件,但到目前为止大多数其他事情都不起作用。
编辑:
我只是想补充一点,Apache 服务器仍然运行良好,没有任何问题,尽管我在尝试停止并重新启动它时确实收到了错误。不依赖 MySQL 的页面仍然可以毫无问题地加载。
我还尝试通过搜索 PID 来终止 mysql 进程,并且也按照下面的建议 Killall mysqld (以及 Killall mysql 只是为了好玩)。通过这些尝试没有找到任何进程。
我不知道它是否相关,但即使使用超级用户,我也无法打开(在 vim 中)或查看 mysqld.sock 文件(权限被拒绝)。
你有没有尝试过使用
killall mysqld
Run Code Online (Sandbox Code Playgroud)
杀死服务器而不是仅仅结束服务,然后启动 MySQL 服务?
或者您可以尝试使用删除 mysql.sock
rm /var/run/mysqld/mysqld.sock
Run Code Online (Sandbox Code Playgroud)
然后你只需要通过启动服务或运行来再次运行MySQL服务器
mysqld
Run Code Online (Sandbox Code Playgroud)
它应该为自己创建一个新的 /var/run/mysqld/mysqld.sock ,一切都应该顺利。只是一个想法:发生这种情况可能是因为计算机没有正确关闭电源,或者 MySQL 只是有点混乱。