我有一个大问题试图连接到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发行版中进行了测试

其他回答

搞了两天之后,我想说说我的看法,

你在用hhvm吗?

如果是,在/etc/hhvm/server.ini中追加下一行

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

如果一切正常,并且您刚刚开始看到这个错误,在执行其他操作之前,请确保您没有耗尽磁盘空间:

df -h

如果卷所在的mysql。sock is being created是在100%使用,MySql将无法创建它,这将是这个错误的原因。你需要做的就是删除一些不需要的东西,比如旧的日志文件。

尝试使用-h(主机)和-P(端口):

mysql -h 127.0.0.1 -P 3306 -u root -P

这对我来说已经足够好了

sudo /etc/init.d/mysql restart

有很多潜在的问题会导致这个错误。正如另一个回答中所建议的,最好的方法是检查日志文件。这可以在不同的位置找到,这取决于平台。对我来说,它位于/var/log/mysqld.错误是“设备上没有剩余空间”。在做了一些清理之后,我可以启动服务,问题就解决了。