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

当前回答

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

其他回答

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

如果你的my.cnf文件(通常在/etc/mysql/文件夹中)正确配置了:

socket=/var/lib/mysql/mysql.sock

可以使用以下命令检查mysql是否正在运行:

mysqladmin -u root -p status

尝试更改mysql文件夹的权限。如果你在当地工作,你可以尝试:

sudo chmod -R 755 /var/lib/mysql/

这为我解决了问题。

我还发现这是一个权限问题。我将MySQL文件与工作安装(都在Debian 6 squeeze上)进行了比较,并不得不进行以下所有权更改(其中mydatabase是您拥有的任何数据库)。

所有权mysql: mysql:

chown mysql:mysql /var/lib/mysql
chown mysql:mysql /var/lib/mysql/ib*
chown mysql:mysql /var/lib/mysql/mydatabase
chown mysql:mysql /var/lib/mysql/mydatabase/*
chown mysql:mysql /var/lib/mysql/mysql/* 

所有权mysql:根:

chown mysql:root /var/lib/mysql/mysql
chown mysql:root /var/run/mysqld 

所有权mysql: adm:

chown mysql:adm /var/log/mysql
chown mysql:adm /var/log/mysql.err
chown mysql:adm /var/log/mysql.log* 

我得到了以下错误:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)

尝试了几种方法,最终通过以下方法解决:

sudo gksu gedit /etc/mysql/my.cnf

修改:

#bind-address       = 127.0.0.1

to:

bind-address        = localhost

并重新启动:

sudo /etc/init.d/mysql restart

它工作。

我使用127.0.0.1为-h代替localhost,一切正常。在其他情况下有什么-错误上面。