找不到 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 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 我和你的情况一样,你的问题是怎么解决的?
快速查找套接字参数而无需其他所有操作: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的主要内容,如果未能解决你的问题,请参考以下文章