2009-04-14 36 views
61

我只是不得不重新安装mysql,并且遇到启动问题。它找不到套接字(mysql.sock)。问题是,我也没有。在我的Mac OS X 10.4终端中,我输入:locate mysql.sock,然后我回到/private/tmp/mysql.sock。它是有意义的,该套接字文件存在于该位置,但实际上并没有。找不到mysql.sock

  1. 如何找到套接字文件?

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

回答

118

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

运行

% mysqladmin variables 

并选中 '插座' 变量

-4

我无法与问题#1帮助,但刷新locate的文件数据库,运行:

updatedb 
+0

不起作用 – Tony 2009-04-14 17:27:43

+2

那么为什么这是公认的答案? – 2010-12-21 19:46:29

15

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

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

找出该文件应该是,使用:

% mysqld --verbose --help | grep ^socket 
+1

或mysql --verbose --help | grep^socket – Ondrej 2013-12-19 10:03:55

+1

@Ondrej无疑会告诉你_client_认为它在看什么?运行`mysqld`的一点是,它应该告诉你_server_实际放在哪里! – Alnitak 2013-12-19 10:17:21

+0

在我的xampp安装我无法找到守护进程,所以没有它的尝试,它的工作:) ...幕后发生了什么我没有线索...... – Ondrej 2013-12-19 15:28:05

0

刷新定位的数据库我跑

/usr/libexec/locate.updatedb 
7

我的问题也是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= ...

26

这解决了我的问题

mysql_config --socket 

UPDATE

mysql_config能告诉我们该文件的MySQL。袜子应该是,但在我的情况下,该文件不存在。所以,我已经删除的my.cnf:

sudo rm -rf /etc/my.cnf 

然后重新启动MySQL的:创建

brew services restart mysql 

文件和MySQL目前运行良好。

0
$ mysqladmin variables | grep sock 

试试这个,而是输出所需的结果,摆脱无关的信息。

2

原来的问题似乎来自于对a)文件在哪里和b)在哪里寻找(以及为什么我们不能在找到或grep时找到它)的混淆。我认为Alnitak的观点是你想找到它的链接地址 - 但grep不会显示你的链接,对吧?该文件不在那里,因为它是一个链接,它只是一个指针。你仍然需要知道把链接放在哪里。

我的袜子文件肯定是在/ tmp中,我得到的错误是在/ var/lib /中寻找它(不仅仅是/ var)我已经链接到/ var和/ var/lib现在,我仍然出现错误“无法通过套接字'var/lib/mysql.sock'(2)”连接到本地MySQL服务器。

注意(2)错误后......我在另一个线程上发现这意味着套接字可能确实试图被使用,但是套接字本身有问题 - 所以要关闭机器 - 完全 - 以便套接字关闭。然后重新启动应该修复它。我试过了,但它对我没有用(现在我质疑我是否很快重启?真的吗?)也许这是对其他人的解决方案。

8

这个发现对我来说:

netstat -ln | grep mysql 

的Mac OSX

3

我使用的确切路径:

netstat -ln | grep -o -m 1 -E '\S*mysqld?\.sock' 

因为这只会返回路径,并且不需要任何输入你可以在shell脚本中使用它。

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

0

(Q1)如何找到套接字文件?

套接字文件的默认位置是/tmp/mysql.sock,为您的系统找到套接字文件使用它。

mysqladmin variables | grep socket 

如果您刚刚安装了MySql,则在启动服务器之前不会创建mysql.sock文件。使用此命令启动它。

sudo launchctl load -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist 

如果提示输入密码,您可以传递用户名root或其他用户名。终端会提示你输入密码。

mysqladmin --user root --password variables | grep socket 

(Q2)我怎样才能刷新查找指数

刷新使用此命令查找分贝。

sudo /usr/libexec/locate.updatedb 
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: ready for connections.

Version: '5.7.12' socket: '/tmp/mysql.sock' port: 3306 Homebrew

0

我找不到mysql的插座都那么重新安装MySQL服务器(所有表和phpmyadmin设置保留)。下面是命令:

1)安装

sudo apt-get install mysql-server

2)按照终端配置步骤

sudo mysql_secure_installation

3)检查状态:(应该返回 “活性:活性(运行)”)

systemctl status mysql.service