无法通过套接字连接到本地MySQL服务器(不时)

时间:2017-06-12 21:34:14

标签: mysql

我有一个LAMP堆栈设置。有时,当我从浏览器打开某个页面时,我收到以下错误消息:

Error creating the connection!: SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

我认为服务器配置正确。问题大约每两个月发生一次。每次当我重启Linux服务器或重启mysql时,问题都消失了。我想永久解决这个问题。谁能给我一些想法?

非常感谢。

修改

问题又出现了,我检查了mysqld.sock文件,它不存在。你知道如何解决这个问题吗? - 瑞安7月23日16:24

4 个答案:

答案 0 :(得分:2)

如果您的文件my.cnf(通常位于/etc/mysql/文件夹中)已正确配置

socket=/var/run/mysqld/mysqld.sock

修饰

#bind-address = 127.0.0.1

bind-address = localhost

您可以使用以下命令检查mysql是否正在运行:

mysqladmin -u root -p status

尝试将您的权限更改为mysql文件夹。如果您在本地工作,可以尝试:

sudo chmod -R 755 /var/run/mysqld/

然后重启mysql。

祝你好运。

答案 1 :(得分:1)

可能是日志文件变得太大而重新启动会刷新它。有关服务器维护和日志文件的文档,请参阅this。另见digital ocean的讨论。似乎在serverfault

的讨论中得到了确认

答案 2 :(得分:1)

您可以尝试更改MySQL sock文件的权限,如下所示:

chmod 777 '/var/run/mysqld/mysqld.sock'

这是一个测试,看看无论用户mysqld是否正在使用,它都将访问你的mysqld.sock文件。因此,重新启动MySQL并更改mysqld.sock的权限。如果你的sock文件夹可以通过任何mysqld进程访问,你需要检查一下。

答案 3 :(得分:-2)

如果mysqld.sock文件不存在,也就是说您的配置文件不正确。检查/etc/mysql/my.conf中的mysql配置文件,找到套接字配置,就像Vanya Avchyan所说的那样

我认为套接字配置是/var/run/mysqld/mysqld.sock,但实际上你的mysql进程在其他地方的sock文件中运行。 我曾经遇到过这个问题,/tmp/mysqld.sock中存在真正的套接字文件。 所以运行

sudo find / -name 'mysqld.sock'

找到真正的sock文件并将my.conf更改为这个真实的地方,重新启动你的mysql。可能有工作。