我只需要重新安装mysql,我就遇到了启动问题。它找不到套接字(mysql.sock)。问题是我也不能。在我的Mac OS X 10.4终端中,我输入locate mysql.sock
,然后我回来/private/tmp/mysql.sock
。套接字文件存在于该位置是有道理的,但事实上并非如此。
如何找到套接字文件?
如果locate返回一个错误的位置,它必须有某种内存,可能还有索引。如何刷新该索引?
答案 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