【问题标题】:Can't connect to localhost using Python's MySQLdb无法使用 Python 的 MySQLdb 连接到 localhost
【发布时间】:2011-01-11 20:37:15
【问题描述】:

我是新手,所以可能有错误的术语,但是当我运行以下脚本时:

import MySQLdb

conn = MySQLdb.connect (host = 'localhost',
   user = 'erin',
   passwd = 'erin',
          db = 'sec')

我得到错误:

  File "/Library/Python/2.6/site-packages/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg/MySQLdb/__init__.py", line 81, in Connect
    return Connection(*args, **kwargs)
  File "/Library/Python/2.6/site-packages/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg/MySQLdb/connections.py", line 187, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (2002, "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)")

该目录中没有名为 mysql.sock 的文件,但我不知道套接字是什么,也不知道如何使用 MySQLdb 模块为其指定正确的位置。

【问题讨论】:

  • 如果在错误消息中发现错误代码 (2),您可以节省更多时间。 2 表示找不到文件:# perror 2 OS 错误代码 2:没有这样的文件或目录

标签: python mysql connect


【解决方案1】:

我已经设法通过将我的主机设置为“127.0.0.1”而不是“localhost”来解决这个问题。

【讨论】:

  • 这是有效的,因为当您指定 localhost 时,它会尝试通过 unix 套接字连接,而当您通过 127.0.0.1 连接时,它会尝试通过标准 TCP/IP 连接。但是,如果您指定localhost,那么除非您另外指定,否则它将使用默认的/tmp/mysql.sock
  • 我测试并发现“localhost”会比“127.0.0.1”更快,因为“localhost”使用本地unix_socket。所以我更喜欢罗马答案。
【解决方案2】:

如果你的mysql套接字没有放在/tmp/mysql.sock,你可以用

conn = MySQLdb.connect (unix_socket = 'path_to_your_socket', host = 'localhost', user = 'erin', passwd = 'erin', db = 'sec')

编辑:对于 macosx 上的 mamp,mysql 套接字路径应该类似于 /Applications/MAMP/tmp/mysql/mysql.sock

【讨论】:

  • 在你的 shell 中使用 mysql_config --socket 应该可以,或者 /path/to/mysql/bin/mysql_config 如果你将它安装在 /opt 或其他东西中
  • 对不起,如果我不应该问后续问题 - 如果这是不礼貌的,请忽略我。当我输入 mysql_config --socket 时,响应是 '/tmp/mysql.sock'
  • 你的mysql服务器真的在运行吗?
  • 是的。我正在使用 MAMP。我可以通过 phpmyadmin 对数据库做一些事情。
  • 啊,mamp 很特别,因为它有一个独立的 mysql 安装 - 请参阅上面评论的补充
【解决方案3】:

您的 mysql 安装可能将套接字放在其他地方。您可以在 mysql conf 文件中进行配置。

你可能想看看这个类似的帖子:Installing mysql on leopard: "Can't connect to local MySQL server through socket"

【讨论】:

    猜你喜欢
    • 2012-06-22
    • 2018-05-17
    • 1970-01-01
    • 2015-12-30
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    相关资源
    最近更新 更多