PyMySQL 无法连接到本地主机上的 MySQL

新手上路,请多包涵

我正在尝试使用 PyMySQL 连接到本地主机上的 MySQL:

 import pymysql
conn = pymysql.connect(db='base', user='root', passwd='pwd', host='localhost')

但是(在 Python 2.7 和 Python 3.2 上)我得到了错误:

socket.error: [Errno 111] 连接被拒绝

pymysql.err.OperationalError:(2003,“无法连接到‘localhost’(111)上的 MySQL 服务器”)

我确定 mysqld 正在运行,因为我可以使用 mysql 命令或 phpMyAdmin 进行连接。此外,我可以使用几乎相同的代码在 Python 2 上使用 MySQLdb 进行连接:

 import MySQLdb
conn = MySQLdb.connect(db='base', user='root', passwd='pwd', host='localhost')

看来问题出在 PyMySQL 端而不是 MySQL,但我不知道如何解决。

原文由 O‘Fermah 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

两个猜测:

  1. 运行 mysqladmin variables | grep socket 获取套接字所在的位置,并尝试像这样建立连接:
    pymysql.connect(db='base', user='root', passwd='pwd', unix_socket="/tmp/mysql.sock")

  1. 运行 mysqladmin variables | grep port 并验证端口是否为 3306。如果不是,您可以像这样手动设置端口:
    pymysql.connect(db='base', user='root', passwd='pwd', host='localhost', port=XXXX)

原文由 Lucas Wiman 发布,翻译遵循 CC BY-SA 3.0 许可协议

似乎将 localhost 更改为 127.0.0.1 修复了错误,至少在我的配置中是这样。如果没有,我会在 tcp sockets connection 中查找错误,当然,将其作为错误发布到 pymysql

原文由 BrainStorm 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题