我有一个大问题试图连接到mysql。当我跑步时:

/usr/local/mysql/bin/mysql start

我有以下错误:

Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (38)

我有mysql。Sock在/var/mysql目录下。

在/etc/my.cnf中,我有:

[client]
port=3306
socket=/var/mysql/mysql.sock

[mysqld]
port=3306
socket=/var/mysql/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M

在/etc/php.ini中有:

; Default socket name for local MySQL connects.  If empty, uses the built-in
; MySQL defaults.
mysql.default_socket = /var/mysql/mysql.sock

我已经使用sudo /opt/local/apache2/bin/apachectl restart重启apache

但还是有误差。

否则,我不知道这是否相关,但当我执行mysql_config——sockets时,我得到

--socket         [/tmp/mysql.sock]

当前回答

另一个解决方法是编辑/etc/my.cnf并在[client]部分中包含host

 [client]
 #password       = your_password
 host            = 127.0.0.1
 port            = 3306
 socket          = /var/run/mysql/mysql.sock

然后重新启动mysql服务。

该解决方案在服务器版本:5.5.25a-log Source发行版中进行了测试

其他回答

我有同样的问题,这是由mysql服务器运行时更新mysql驱动程序引起的。 我修复了它,只是重新启动mysql和apache2:

Sudo service mysql stop Sudo服务mysql启动 Sudo服务apache2停止 Sudo服务apache2启动

确保运行mysqld: /etc/init.d / mysql开始

您可能希望检查硬盘是否已满(控制台上的df),这就是最终触发此错误的原因。

对我来说,这只是一个MySQL需要很长时间加载的情况。我的一个数据库中有超过10万个表,它最终启动了,但显然在这种情况下需要很长时间。

我得到这个错误是因为我正在运行MAMP,而我的.sock文件在不同的位置。我只是在应用程序认为应该指向实际位置的地方添加了一个符号链接,效果很好。