找不到 mysql.sock

Posted

技术标签:

【中文标题】找不到 mysql.sock【英文标题】:Cannot find mysql.sock 【发布时间】:2010-10-19 09:47:26 【问题描述】:

我只需要重新安装 mysql,但在启动时遇到了问题。它找不到套接字(mysql.sock)。问题是我也不能。在我的 Mac OS X 10.4 终端中,我输入:locate mysql.sock,然后我返回 /private/tmp/mysql.sock。套接字文件存在于该位置是有道理的,但实际上并不存在。

    如何找到套接字文件?

    如果 locate 返回一个错误的位置,它必须有某种内存并且可能有索引。如何刷新该索引?

【问题讨论】:

/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock Refer to this answer 【参考方案1】:

我无法回答问题 #1,但要刷新 locate 的文件数据库,请运行:

updatedb

【讨论】:

【参考方案2】:

应该在 MySQL 守护进程启动时自动创建套接字文件。

如果没有找到,很可能应该包含它的目录不存在,或者其他一些文件系统问题正在阻止创建套接字。

要找出文件的位置,请使用:

% mysqld --verbose --help | grep ^socket

【讨论】:

或mysql --verbose --help | grep ^socket @Ondrej 肯定会告诉您 client 认为它在寻找什么?运行mysqld 的重点是它应该告诉您服务器 实际放置它的位置! 在我的 xampp 安装中,我找不到守护进程,所以在没有它的情况下尝试了它并且它有效:) ...幕后发生的事情我不知道...【参考方案3】:

回答你问题的第一部分:

运行

% mysqladmin -p -u <user-name> variables

并检查“套接字”变量

【讨论】:

如果可以的话,我会完全把这个答案改成正确的。要是我早点知道就好了! mysqladmin variableserror: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'的时候怎么办? :) 我遇到了与@afEkenholm 相同的错误,并且无法找到解决方案。我从根目录运行sudo find / -name mysql.sock,但无法在系统上的任何位置找到 mysql.sock。我使用 Mac OS 10.7 的 64 位 dmg 文件安装了 MySQL。目前正在运行小牛队。 @b_dubb 我和你的情况一样,你的问题是怎么解决的? 快速查找套接字参数而无需其他所有操作:mysqladmin variables | grep 套接字【参考方案4】:

为了刷新我运行的定位数据库

/usr/libexec/locate.updatedb

【讨论】:

【参考方案5】:

我的问题也是 mysql.sock 文件。

在drupal安装过程中,我不得不说我想使用哪个数据库 但我的数据库没有找到

mkdir /var/mysql
ln -s /tmp/mysql.sock /var/mysql/mysql.sock

系统正在搜索 mysql.sock 但它在错误的目录中

你所要做的就是链接它;)

我花了很多时间在谷歌上搜索所有重要信息,但我花了好几个小时才知道如何适应,但现在我可以展示结果了 :D

ps:如果你想完全一样,你必须将你的/tmp/mysql.sock-file(如果它也位于你的系统中)链接到 php.ini(或 php.default.ini)给定的目录,其中@987654323 @

【讨论】:

在 php.ini 中更改 pdo_mysql.default_socket 后,您需要重新启动网络服务器以加载更改 sudo apachectl restart【参考方案6】:

这解决了我的问题

mysql_config --socket

更新

mysql_config 可以告诉我们文件 mysql.sock 应该在哪里,但在我的情况下,该文件不存在。所以,我删除了 my.cnf:

sudo rm -rf /etc/my.cnf

然后重启mysql:

brew services restart mysql

文件已创建,mysql现在运行良好。

【讨论】:

该命令告诉你mysql.sock在哪里回答问题 这个命令不会告诉你文件在哪里。它告诉你 mysql 在哪里寻找它:--socket 的配置设置。 我没有ls: /etc/my.cnf: No such file or directory 可能是我必须先创建它? 如果您在/etc/my.cnf 没有文件,请尝试查看/usr/loca/etc/my.cnf - @Abhi【参考方案7】:
$ mysqladmin variables | grep sock

试试这个,这将输出所需的结果,去掉不相关的信息。

【讨论】:

【参考方案8】:

最初的问题似乎来自以下混淆:a) 文件在哪里,b) 在哪里寻找它(以及为什么我们在执行定位或 grep 时找不到它)。我认为 Alnitak 的意思是你想找到它链接到的位置 - 但 grep 不会显示链接,对吧?该文件并不存在于那里,因为它是一个链接,它只是一个指针。您仍然需要知道将链接放在哪里。

我的 sock 文件肯定在 /tmp 中,我得到的错误是在 /var/lib/ 中寻找它(不仅仅是 /var)我现在已经链接到 /var 和 /var/lib,我仍然是收到错误“无法通过套接字'var/lib/mysql.sock' (2) 连接到本地 MySQL 服务器”。

注意错误后的(2)....我在另一个线程上发现这意味着可能确实尝试使用套接字,但是套接字本身有问题 - 所以要关闭机器 - 完全- 使套接字关闭。然后重新启动应该可以解决它。我试过这个,但它对我不起作用(现在我怀疑我是否重启得太快了?真的吗?)也许这将是其他人的解决方案。

【讨论】:

【参考方案9】:

这是为我找到的:

netstat -ln | grep mysql

Mac OSX

【讨论】:

【参考方案10】:

我得到了确切的路径:

netstat -ln | grep -o -m 1 -E '\S*mysqld?\.sock'

由于这仅返回路径并且不需要任何输入,因此您可以在 shell 脚本中使用它。

MySQL 必须当前在您的机器上运行才能正常工作。也适用于 MariaDB。

【讨论】:

很好的答案!与其他任何答案不同,这实际上找到了套接字的位置。【参考方案11】:

我在 Mac OS X 10.11.6 上遇到了同样的错误:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

在这里和相关问题中经过大量的痛苦和挖掘后,似乎都没有解决问题,我回去删除了已安装的文件夹,然后只做了brew install mysql

大多数命令仍然出现相同的错误,但这有效:

/usr/local/bin/mysqld

然后返回:

/usr/local/bin/mysqld:准备连接。

版本:'5.7.12' 套接字:'/tmp/mysql.sock' 端口:3306 Homebrew

【讨论】:

【参考方案12】:

我根本找不到 mysql 套接字,所以重新安装了 mysql 服务器(所有表和 phpmyadmin 设置都被保留了)。以下是命令:

1) 安装

sudo apt-get install mysql-server

2) 遵循终端配置步骤

sudo mysql_secure_installation

3) 检查状态:(应返回“Active: active (running)”)

systemctl status mysql.service

【讨论】:

【参考方案13】:

不幸的是,上述方法都不适用于我的情况。但最后我找到了解决方案。

要查找 mysql.sock 文件在哪里,只需打开 xampp 管理器,选择 MySQL 并单击右侧的配置。在配置面板上点击打开配置文件,然后按 CMD+F 快捷键搜索 mysql.sock。

就我而言,mysql.sock 的所有者已更改,我必须将其更改回 root admin 使用:chmod root:admin mysql.sock

之后数据库就被访问了。

【讨论】:

以上是关于找不到 mysql.sock的主要内容,如果未能解决你的问题,请参考以下文章

java 枚举 找不到符号

bat系统找不到指定文件怎么办?

java package找不到符号

SpringBoot报找不到 dao 问题

ubuntu20.04找不到start命令

找不到名为“my”的模块。找不到名为“mycontroller”的控制器