找不到mysql.sock
我只是不得不重新安装MySQL,我有一个问题,启动它。 它无法find套接字(mysql.sock)。 问题是我也没有。在我的Mac OS X 10.4terminal上,input: locate mysql.sock
,然后找回/private/tmp/mysql.sock
。 套接字文件存在于该位置是合理的,但实际上并不存在。
-
我如何find套接字文件?
-
如果定位返回一个错误的位置,它必须有一些内存和可能的索引。 我怎样才能刷新那个索引?
回答你的问题的第一部分:
跑
% mysqladmin variables
并检查'套接字'variables
这解决了我的问题
mysql_config --socket
UPDATE
mysql_config可以告诉我们文件mysql.sock应该在哪里,但在我的情况下文件不存在。 所以,我删除了my.cnf:
sudo rm -rf /etc/my.cnf
然后重新启动mysql:
brew services restart mysql
该文件已创build和MySQL现在运行良好。
套接字文件应该在MySQL守护进程启动时自动创build。
如果找不到,最有可能包含它的目录不存在,或者其他一些文件系统问题阻止创build套接字。
要找出文件的位置,请使用:
% mysqld --verbose --help | grep ^socket
我的问题也是mysql.sock文件。
在drupal安装过程中,我不得不说我想使用哪个数据库,但我的数据库没有find
mkdir /var/mysql ln -s /tmp/mysql.sock /var/mysql/mysql.sock
系统正在searchmysql.sock,但它在错误的目录中
你所要做的就是把它链接起来;)
我花了很多时间去search所有重要的信息,但是花了我几个小时才知道如何去适应,但现在我可以提出结果:D
ps:如果你想正好你必须链接你的/tmp/mysql.sock-file
(如果它也位于你的系统中)到php.ini(或php.default.ini)给出的目录pdo_mysql.default_socket= ...
这为我find了:
netstat -ln | grep mysql
Mac OSX
我得到了确切的path使用:
netstat -ln | grep -o -m 1 -E '\S*mysqld?\.sock'
由于这只返回path,不需要任何input,所以你可能会在shell脚本中使用它。
MySQL必须正在你的机器上运行才能工作。 也适用于MariaDB。
原来的问题似乎来自于以下方面的混淆:a)文件在哪里; b)在哪里查找(以及为什么当我们执行定位或grep时,我们不能在那里find它)。 我认为Alnitak的观点是,你想find它的链接,但grep不会显示你的链接,对不对? 该文件不在那里,因为它是一个链接,它只是一个指针。 你仍然需要知道把链接放在哪里。
我的袜子文件肯定是在/ tmp和我得到的错误是在/ var / lib /(不只是/ var)我已经链接到/ var和/ var / lib现在,我仍然得到错误“无法通过套接字'var / lib / mysql.sock'(2)”连接到本地MySQL服务器。
注意(2)错误之后….我在另一个线程上发现这意味着套接字可能确实被尝试使用,但是套接字本身有问题 – 所以要closures机器 – 完全 – 这样套接字closures。 然后重新启动应该修复它。 我尝试了这个,但是对我来说并没有什么作用(现在我怀疑我是否真的重新启动了?真的吗?)也许这将会是别人的解决scheme。
要刷新我find的数据库,我跑了
/usr/libexec/locate.updatedb
$ mysqladmin variables | grep sock
试试这个,这将输出所需的结果,摆脱无关的信息。
(Q1)如何find套接字文件?
套接字文件的默认位置是/tmp/mysql.sock,为您的系统查找套接字文件使用此。
mysqladmin variables | grep socket
如果您刚刚安装了MySql,那么在启动服务器之前,不会创buildmysql.sock文件。 使用这个命令来启动它。
sudo launchctl load -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
如果提示input密码,则可以传递用户名root或其他用户名。 terminal会提示你input密码。
mysqladmin --user root --password variables | grep socket
(Q2)如何刷新定位索引
用这个命令刷新locate db。
sudo /usr/libexec/locate.updatedb
我在Mac OS X 10.11.6上遇到同样的错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
经过大量的苦恼和挖掘,在这里和有关的问题,没有一个似乎解决了这个问题的build议,我回去删除已安装的文件夹,只是做brew install mysql
。
大多数命令仍然会出现同样的错误,但是这个工作正常:
/usr/local/bin/mysqld
并返回:
/ usr / local / bin / mysqld:准备连接。
版本:'5.7.12'socket:'/tmp/mysql.sock'port:3306 Homebrew
我根本找不到mysql套接字,所以重新安装了mysql服务器(所有的表和phpmyadmin设置都被保留下来了)。 这里是命令:
1)安装
sudo apt-get安装mysql-server
2)遵循terminalconfiguration步骤
sudo mysql_secure_installation
3)检查状态:(应该返回“激活:激活(正在运行)”)
systemctl状态mysql.service
我不禁要问题#1,但刷新locate
的文件数据库,运行:
updatedb