找不到mysql.sock


81

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

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

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


1
/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
马克西玛Alekz

Answers:


139

回答问题的第一部分:

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

并检查“ socket”变量


1
如果可以的话,我将完全将此答案更改为正确的答案。如果我能早一点知道这一点!
Steph Rose 2012年

49
mysqladmin variables。什么时候做什么error: '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 2014年

@b_dubb我与您的情况相同,您是如何解决问题的?
MeganZhou 2014年

1
要快速查找套接字参数,而无需其他所有操作,请执行以下操作:grep套接字
2014年

48

这解决了我的问题

mysql_config --socket

更新

mysql_config可以告诉我们mysql.sock文件应该在哪里,但就我而言,该文件不存在。因此,我删除了my.cnf:

sudo rm -rf /etc/my.cnf

然后重启mysql:

brew services restart mysql

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


7
该命令告诉您mysql.sock在哪里回答问题
Eugene Ramirez 2013年

3
此命令不会告诉您文件在哪里。它告诉您mysql在哪里寻找它:--socket的配置设置。
morksinaanab 2014年

我没有 ls: /etc/my.cnf: No such file or directory可能是我必须首先创建它吗?

如果您没有/etc/my.cnf尝试看的文件/usr/loca/etc/my.cnf-@Abhi
rwcorbett

20

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

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

要找出文件应该在哪里,请使用:

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

4
还是mysql --verbose --help | grep ^ socket
Ondrej Rafaj 2013年

1
@Ondrej肯定会告诉您客户认为它在看什么?运行的要点mysqld是它应该告诉您服务器实际将其放置在何处!
Alnitak

在我的xampp安装程序上,没有它,我找不到经过如此尝试的守护程序,它就起作用了:) ...幕后发生的事情我
一无所知


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= ...


在php.ini中进行更改后,pdo_mysql.default_socket您需要重新启动网络服务器以加载更改sudo apachectl restart
Szekelygobe

5

我得到使用的确切路径:

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

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

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


好答案!实际上,这找到了套接字的位置,这与其他任何答案都不一样。
泰勒·克里斯汀

2

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

我的袜子文件肯定在/ tmp中,而我得到的错误正在/ var / lib /中查找(而不只是/ var),我现在链接到/ var和/ var / lib了,但我仍然遇到错误“无法通过套接字'var / lib / mysql.sock'(2)连接到本地MySQL服务器”。

请注意错误后的(2)。...我在另一个线程上发现,这意味着确实可以尝试使用套接字,但是套接字本身出了点问题-因此,请完全关闭计算机,以便插座关闭。然后重启应该解决它。我尝试了一下,但是对我没用(现在我问我重启得太快了吗?真的吗?)也许这将是其他人的解决方案。


1
$ mysqladmin variables | grep sock

请尝试执行此操作,这将输出所需的结果,从而摆脱不相关的信息。


0

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

/usr/libexec/locate.updatedb

0

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

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

mysqladmin variables | grep socket

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

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

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

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

(Q2)如何刷新定位索引

使用此命令刷新定位数据库。

sudo /usr/libexec/locate.updatedb

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'套接字:'/tmp/mysql.sock'端口:3306 Homebrew


0

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

1)安装

须藤apt-get install mysql-server

2)遵循终端配置步骤

须藤mysql_secure_installation

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

systemctl状态mysql.service


0

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

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

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

之后,就可以访问数据库了。


-4

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

updatedb
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.