我有一个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
答案 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。可能有工作。