找不到mysql.sock

时间:2009-04-14 16:57:15

标签: mysql macos sockets install

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

  1. 如何找到套接字文件?

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

14 个答案:

答案 0 :(得分:127)

回答你问题的第一部分:

运行

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

并检查'socket'变量

答案 1 :(得分:36)

这解决了我的问题

mysql_config --socket

<强>更新

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

sudo rm -rf /etc/my.cnf

然后重启mysql:

brew services restart mysql

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

答案 2 :(得分:17)

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

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

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

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

答案 3 :(得分:15)

这找到了我:

netstat -ln | grep mysql

Mac OSX

答案 4 :(得分:10)

我的问题也是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)给出的目录,其中pdo_mysql.default_socket= ...

答案 5 :(得分:4)

我使用了确切的路径:

var dups = ListItems.GroupBy(i => new { i.Value, i.Code })
                    .Select(g => new 
                     { 
                        Length = g.Key.Value,
                        Label = g.Key.Code,
                        Count = g.Count()
                     })
                    .Where(g => g.Count > 1);

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

MySQL必须正在您的计算机上运行才能实现。适用于MariaDB。

答案 6 :(得分:2)

原始问题似乎来自混淆a)文件在哪里,以及b)在哪里查找(为什么我们在进行定位或grep时无法找到它)。我认为Alnitak的观点是你想找到它所链接的地方 - 但是grep不会向你显示链接,对吧?该文件不在那里,因为它是一个链接,它只是一个指针。您仍然需要知道链接的位置。

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

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

答案 7 :(得分:1)

$ mysqladmin variables | grep sock

尝试这一点,这将输出所需的结果,摆脱不相关的信息。

答案 8 :(得分:0)

要刷新locate的数据库,我跑了

/usr/libexec/locate.updatedb

答案 9 :(得分:0)

(Q1)如何找到套接字文件?

套接字文件的默认位置是/tmp/mysql.sock,要找到系统使用它的套接字文件。

sudo launchctl load -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist

如果刚刚安装了MySql,则在启动服务器之前不会创建mysql.sock文件。使用此命令启动它。

mysqladmin --user root --password variables | grep socket

如果提示输入密码,您可以传递用户名root或其他用户名。终端会提示您输入密码。

sudo /usr/libexec/locate.updatedb

(Q2)如何刷新定位索引

使用此命令刷新locate db。

Product

答案 10 :(得分:0)

我在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'socket:'/ tmp / mysql.sock'端口:3306 Homebrew

答案 11 :(得分:0)

我找不到mysql socket所以重新安装的mysql服务器(所有表和phpmyadmin设置都被保留)。以下是命令:

1)安装

  

sudo apt-get install mysql-server

2)遵循终端配置步骤

  

sudo mysql_secure_installation

3)检查状态:(应返回“活动:活动(运行)”)

  

systemctl status mysql.service

答案 12 :(得分:0)

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

要查找mysql.sock文件的位置,只需打开xampp manager,选择MySQL并单击右侧的Configure。在配置面板上单击“打开配置文件”,然后通过按CMD + F快捷键搜索mysql.sock。

在我的情况下,mysql.sock的所有者被更改了,我不得不将其更改回root管理员:chmod root:admin mysql.sock

之后访问了数据库。

答案 13 :(得分:-4)

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

updatedb