无法通过socket'/tmp/MySQL.s连接到本地MySQL服务器

2024-04-26 03:11:20 发布

您现在位置:Python中文网/ 问答频道 /正文

当我在测试套件中尝试连接到本地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确认套接字存在。另外,如果我打开一个 在异常的except子句中的调试器中,我能够可靠地连接 参数完全相同。

这个问题复制得相当可靠,但似乎不是100%, 因为我的测试套件事实上每过一次 击中这个错误。当我试图用sudo dtruss运行时,它没有再现。

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

切换到使用主机127.0.0.1会产生错误:

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

Tags: toserver套件localconnect错误mysqlsocket
3条回答

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

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

MySQL手册的相关章节是here。我将从这里列出的调试步骤开始。

另外,记住localhost和127.0.0.1在这个上下文中是不同的:

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

例如,您可以检查数据库是否正在监听TCP连接vinetstat -nlp。它似乎正在监听TCP连接,因为您认为mysql -h 127.0.0.1工作正常。要检查是否可以通过套接字连接到数据库,请使用mysql -h localhost

如果这些都没有帮助,那么您可能需要发布更多有关MySQL配置的详细信息,以及如何实例化连接等

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

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

相关问题 更多 >