无法通过套接字 '/var/mysql/mysql.sock' 连接到本地 MySQL 服务器 (38)

Posted

技术标签:

【中文标题】无法通过套接字 \'/var/mysql/mysql.sock\' 连接到本地 MySQL 服务器 (38)【英文标题】:Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (38)无法通过套接字 '/var/mysql/mysql.sock' 连接到本地 MySQL 服务器 (38) 【发布时间】:2011-07-19 14:03:06 【问题描述】:

我在尝试连接 mysql 时遇到了一个大问题。当我跑步时:

/usr/local/mysql/bin/mysql start

我有以下错误:

Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (38)

/var/mysql 目录下确实有mysql.sock

/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]

【问题讨论】:

MySQL 正在运行吗? 这肯定解释了尝试连接它时的错误。正如@Romain 所提到的,MySQL 的日志中是否有任何内容(尝试/var/log/mysql 或附近的某个地方)表明它为什么没有运行?尝试启动时是否出现错误? 我遇到了同样的错误,但在我的情况下,我发现 mysql 无法启动,因为磁盘已满 100%。 /var/log/mysqld.log 很有帮助。 我想他们询问它是否正在运行的原因是因为套接字是在服务启动时创建的。我安装了 mysql,但从未启动该服务,因此 .sock 文件不存在。如果您刚刚安装,请键入 service mysqld start。 hth 以下shimanyi sudo service mysql start的回答救了我 【参考方案1】:

如果有人在寻找初始化错误

无法连接到数据库“/var/run/mysql/mysql.sock”

在运行 civicrm 和 drupal 时,只需在

中进行以下更改

settings.php 和 civicrm.settings.php

仅在您尝试建立数据库连接的地方

localhost 到 127.0.0.1 #local 安装

【讨论】:

【参考方案2】:

我遇到了这个套接字错误,它基本上归结为 MySQL 没有运行。如果您运行全新安装,请确保安装 1) 系统包和 2) 面板安装程序 (mysql.prefPane)。面板安装程序将允许您转到系统偏好设置并打开 MySQL,然后运行一个实例。

请注意,在全新安装时,我需要重置计算机以使更改正确生效。重新启动后,我运行了一个新实例,并且能够毫无问题地打开到 localhost 的连接。

另外值得注意的是,我显然安装了以前版本的 MySQL,但删除了面板,这样可以很容易地为 mac 用户运行 MySQL 实例。

这个重装过程的好链接:http://www.coolestguyplanettech.com/how-to-install-php-mysql-apache-on-os-x-10-6/

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

两天后,这是我的两分钱,

你在使用 hhvm 吗?

如果是这样,在 /etc/hhvm/server.ini

中追加下一行
hhvm.mysql.socket = /var/run/mysqld/mysqld.sock

【讨论】:

【参考方案5】:

我已经删除了 mysql.sock 文件并且它起作用了。把权利放在上面根本没有用。既不重启,也不怎么……

【讨论】:

【参考方案6】:

尝试运行以下命令:

sudo /etc/init.d/mysql start

【讨论】:

【参考方案7】:

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

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

【讨论】:

【参考方案8】:

我在 Freebsd 上遇到了同样的问题,我通过删除 my.cnf 文件解决了这个问题。 Mysql版本是5.6。

似乎从 5.5 升级后,旧的 my.cnf 仍然存在,并且一些不兼容的参数会导致错误。 旧的my.cnf参数很多,新的只有一个

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

但是,如果您这样做,请记住这可能会带来安全风险,因为如果没有任何进一步的条目,这可能会将您的数据库打开到世界其他地方 ;-) 如果你不这样做,至少添加这一行

bind-address = 127.0.1.1

【讨论】:

【参考方案9】:

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

【讨论】:

【参考方案10】:

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

【讨论】:

【参考方案11】:

在我的情况下,解决方案是我安装了mariadb,别名为mysql。所以所有与mysql 相关的service 命令都没有被识别……我只需要:

service mariadb start

为了更好的衡量:

chkconfig mariadb on

【讨论】:

以上是关于无法通过套接字 '/var/mysql/mysql.sock' 连接到本地 MySQL 服务器 (38)的主要内容,如果未能解决你的问题,请参考以下文章

mysql问题:没有mysql.sock

macos中mysql怎么安装

Can't connect to local MySQL server through socket '/opt/lampp/var/mysql/mysql.sock'

mysql 5.7 配置文件说明

基于XAMPP的MySQL查询浏览器

mysql 5.7配置项最详细的解释