我正在尝试使用 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 许可协议
两个猜测:
mysqladmin variables | grep socket
获取套接字所在的位置,并尝试像这样建立连接:mysqladmin variables | grep port
并验证端口是否为 3306。如果不是,您可以像这样手动设置端口: