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

当前回答

当我为我的文件设置cron job时,我得到了这个错误。我将文件的权限更改为777,但它仍然不适合我。最后我找到了解决办法。也许它会对其他人有帮助。

试试这个命令:

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

记住-h表示主机,-P表示端口,-P表示密码。

其他回答

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

一个快速的解决方案,为我工作:尝试使用本地ip地址(127.0.0.1)而不是'localhost'在mysql_connect()。这将“强制”php通过TCP/IP而不是unix套接字进行连接。

编辑配置文件/etc/mysql/my.cnf:

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

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

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

df -h

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