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

当前回答

这对我来说已经足够好了

sudo /etc/init.d/mysql restart

其他回答

如果你的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服务器运行时更新mysql驱动程序引起的。 我修复了它,只是重新启动mysql和apache2:

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

我通过删除tc.log到/var/lib/mysql目录来解决,因为它在满磁盘后被腐蚀。然后,当我启动mysql时,日志文件被创建为新的。

为了防止出现这个问题,您必须从命令行优雅地关闭服务器,而不是直接下电服务器。

shutdown -h now

这将在关闭机器之前停止正在运行的服务。

基于Centos,当你遇到这个问题时,一个额外的方法是移动mysql.sock:

mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak

service mysqld start

重新启动服务将创建一个名为mqsql.sock的新条目

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

df -h

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