找不到mysql.sock

我只是不得不重新安装MySQL,我有一个问题,启动它。 它无法find套接字(mysql.sock)。 问题是我也没有。在我的Mac OS X 10.4terminal上,input: locate mysql.sock ,然后找回/private/tmp/mysql.sock 。 套接字文件存在于该位置是合理的,但实际上并不存在。

  1. 我如何find套接字文件?

  2. 如果定位返回一个错误的位置,它必须有一些内存和可能的索引。 我怎样才能刷新那个索引?

回答你的问题的第一部分:

 % 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