找不到mysql.sock

Ton*_*ony 77 mysql sockets macos install

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

  1. 我怎样才能找到套接字文件?

  2. 如果locate返回一个错误的位置,它必须有某种内存,可能还有索引.我该如何刷新该索引?

beh*_*has 131

回答你问题的第一部分:

% mysqladmin -p -u <user-name> variables
Run Code Online (Sandbox Code Playgroud)

并检查'socket'变量

  • 跑`mysqladmin变量`.`错误:'无法通过套接字连接到本地MySQL服务器'/tmp/mysql.sock'(2)'` :) (46认同)
  • 如果可以的话,我会完全将这个答案更改为正确的答案。要是我早点知道就好了! (2认同)
  • 要快速查找套接字参数而不需要所有其他参数:mysqladmin variables | grep 套接字 (2认同)

Eug*_*rez 41

这解决了我的问题

mysql_config --socket
Run Code Online (Sandbox Code Playgroud)

UPDATE

mysql_config可以告诉我们文件mysql.sock应该在哪里,但在我的情况下该文件不存在.所以,我删除了my.cnf:

sudo rm -rf /etc/my.cnf
Run Code Online (Sandbox Code Playgroud)

然后重启mysql:

brew services restart mysql
Run Code Online (Sandbox Code Playgroud)

该文件已创建,mysql现在运行良好.

  • 该命令告诉你mysql.sock在哪里回答问题 (6认同)
  • 此命令不会告诉您文件的位置.它告诉你mysql在哪里寻找它:--socket的配置设置. (3认同)

Aln*_*tak 18

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

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

要找出文件的位置,请使用:

% mysqld --verbose --help | grep ^socket
Run Code Online (Sandbox Code Playgroud)

  • 或者mysql --verbose --help | grep ^ socket (4认同)
  • 这是最有帮助和最正确的答案 (2认同)

zer*_*ool 16

这找到了我:

netstat -ln | grep mysql
Run Code Online (Sandbox Code Playgroud)

Mac OSX


小智 10

我的问题也是mysql.sock文件.

在drupal安装过程中,我不得不说我想使用哪个数据库,但找不到我的数据库

mkdir /var/mysql
ln -s /tmp/mysql.sock /var/mysql/mysql.sock
Run Code Online (Sandbox Code Playgroud)

系统正在搜索mysql.sock,但它在错误的目录中

你所要做的就是链接它;)

我花了很多时间来搜索所有重要的信息,但是我花了几个小时来找出如何适应,但现在我可以呈现结果:D

ps:如果你想要完全你必须将你的/tmp/mysql.sock-file(如果它也在你的系统中)链接到php.ini(或php.default.ini)给出的目录pdo_mysql.default_socket= ...


mat*_*l87 6

我使用以下方法获得了确切路径:

netstat -ln | grep -o -m 1 -E '\S*mysqld?\.sock'
Run Code Online (Sandbox Code Playgroud)

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

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