我有一个大问题试图连接到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]

当前回答

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

其他回答

当您使用localhost连接到MySQL时,操作系统使用套接字连接器。但是,如果您使用127.0.0.1 IP地址,操作系统将使用TCP/IP连接器。因此,当您遇到套接字连接器的问题时,一个可能的解决方案是通过指定127.0.0.1 IP地址而不是localhost来尝试使用TCP/IP建立连接。

从这里的许多答案可以看出,在启动MySQL服务时,有许多问题会导致这个错误消息。问题是,MySQL通常会告诉你哪里出了问题,如果你只查看适当的日志文件。

例如,在Ubuntu上,你应该检查/var/log/syslog。由于许多其他内容也可能记录到这个文件中,您可能希望使用grep查看mysql消息,而tail只查看最近的消息。所有这些加在一起,可能是这样的:

Grep mysql /var/log/syslog | tail -50

不要因为别人说“这适用于我的系统”就盲目地更改您的配置。找出你的系统到底出了什么问题,你就能更快地得到更好的结果。

添加

--protocol=tcp 

跟你联系的那些偷车贼都对我有用。

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

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

你在用hhvm吗?

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

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