无法通过套接字“/var/lib/mysql/mysql.sock”(111)连接到本地MySQL服务器

我已经在Silverstripe框架上开发了一个网站,并使用centos(7.0.1406),mariadb(10.0.14)和apache(2.4.6)将其部署到数字海洋服务器。 对于系统pipe理员,我有点新手,所以请按照数字海洋社区文档中的说明设置服务器( https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache –mysql-php-lamp-on-centos-7 )。

当我尝试连接到该网站时,我随机得到以下错误:

[Warning] mysqli :: mysqli():(HY000 / 2002):无法通过套接字“/var/lib/mysql/mysql.sock”(111)连接到本地MySQL服务器

$this->dbConn = new MySQLi($parameters['server'], $parameters['username'], $parameters['password']); 

发生这种情况时,我重新启动服务器(与“重新启动”)问题消失。 它似乎只发生在CMS的活动正在发生。 我的客户在尝试上传图片时经历过很多次,而且我刚刚在CMS中切换页面时也是第一次看到它。

网站前端的使用量不会造成问题(至less目前为止)。 什么可能导致这个问题? 是否有任何可以触发这种失败的网站(PHP)可以执行的操作? 过度使用系统资源/挂断某处/超时? 我在哪里可以开始我的debugging过程?

过去我在类似的环境下部署了大量的站点,但是除了强制通过数字海洋控制面板closures以外,从未遇到这种情况。

111表示连接被拒绝。 也就是说,没有任何东西在听那个套接字。

这意味着MariaDB没有运行,或者被configuration为侦听某个其他套接字(或者根本没有)。

检查您的MariaDBconfiguration,以确保您正确指定了套接字,然后重新启动它。

Hi @AveryPayne。 感谢您花时间阅读这篇文章。 $ paramaters ['server']是'localhost'。 干杯 – 弗雷泽

简短的版本是,你不能从这里到达那里。

根据这个评论和错误消息,我会说你有一个连接types的问题。 错误消息中的套接字声明为/var/lib/mysql/mysql.sock但您正尝试通过本地主机进行networking连接,该主机映射到networking地址127.0.0.1。 你的程序看起来好像在运行时没有使用正确的参数。 在运行时仔细检查参数是否为'localhost',并且在/var/lib/mysql/mysql.socklogging/写出参数,然后仔细检查MySQL是否连接到networking端口3306而不是文件套接字。 /var/lib/mysql/mysql.sock

或者,更改程序的参数, 然后使用文件套接字replaceMySQL。 无论什么工作最简单。

第一步是查看Mariadb的日志文件,该文件通常位于/ var / lib / mysql中,并命名为* .err。

您也可以validation在收到此错误消息时Mariadb仍在服务器上运行,并且可以validation您是否仍然能够login(以防运行)。

我有同样的问题,发现后发现了一些事情。 MariaDB是mysql的一个替代品。 在新系统上,mysql是MariaDB客户端(虽然我不清楚这意味着什么)。 检查服务是否正在运行:

 service mysqld status 

其中指出:

redirect到/ bin / systemctl状态mysqld.service

mysqld.service

加载:未find(原因:没有这样的文件或目录)

有效:无效(死)

换句话说,mysqld服务没有运行。

开始服务为我工作:

 systemctl start mariadb.service 

现在所有的mysql命令按预期工作。

要连接最后一个节点,请在启动时启用该服务:

 systemctl enable mariadb.service