提问者:小点点

无法通过套接字“/tmp/MySQL”连接到本地MySQL服务器。短袜


当我在测试套件中尝试连接到本地MySQL服务器时,它失败,错误如下:

OperationalError: (2002, "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)")

但是,我能够在任何时候,连接到MySQL通过运行命令行mysql程序。一个ps aux|grep mysql显示服务器正在运行,并且stat /tmp/mysql.sock确认套接字存在。此外,如果我在该异常的子句中打开调试器,我就能够可靠地使用完全相同的参数进行连接。

这个问题相当可靠地重现了,但是它似乎不是100%,因为每一次,我的测试套件实际上都会运行而不会碰到这个错误。当我试图用sudo dtruss运行时,它没有重现。

所有的客户端代码都是用Python编写的,尽管我不知道这有什么关系。

切换到使用主机127.0。0.1产生错误:

DatabaseError: Can't connect to MySQL server on '127.0.0.1' (61)

共3个答案

匿名用户

sudo /usr/local/mysql/support-files/mysql.server start 

这对我有用。但是,如果这不起作用,那么请确保mysqld正在运行并尝试连接。

匿名用户

MySQL手册的相关部分在这里。我将从这里列出的调试步骤开始。

此外,请记住localhost和127.0.0.1在这种情况下不是一回事:

  • 如果主机设置为localhost,则使用套接字或管道
  • 如果主机设置为127.0。0.1,则客户端将被迫使用TCP/IP

例如,您可以检查数据库是否正在侦听TCP连接vinetstat-nlp。它似乎正在侦听TCP连接,因为您说的是mysql-h127.0。0.1运行正常。要检查是否可以通过套接字连接到数据库,请使用mysql-h localhost

如果这些都没有帮助,那么你可能需要发布更多关于你的MySQL配置的细节,确切地说,你是如何实例化连接的,等等。

匿名用户

对我来说,问题是我没有运行MySQL服务器。首先运行服务器,然后执行mysql

$ mysql.server start
$ mysql -h localhost -u root -p