我正在尝试使用PyMySQL连接到localhost上的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'上的MySQL服务器'(111)”)
我确定mysqld正在运行,因为我可以使用mysql命令或phpMyAdmin进行连接 . 而且,我可以使用几乎相同的代码在Python 2上使用MySQLdb进行连接:
import MySQLdb
conn = MySQLdb.connect(db='base', user='root', passwd='pwd', host='localhost')
似乎问题出在PyMySQL方面而不是MySQL上,但我不知道如何解决它 .
4 回答
似乎更改
localhost
到127.0.0.1
修复了错误,至少在我的配置中 . 如果没有,我会在tcp sockets connection
中查找错误,当然,将其作为pymysql
bugtrack中的错误发布 .两个猜测:
mysqladmin variables | grep socket
以获取套接字所在的位置,并尝试设置如下连接:mysqladmin variables | grep port
并验证端口是否为3306.如果没有,您可以手动设置端口,如下所示:我通过将
localhost
替换为127.0.0.1
并将密码更改为我的MYSQL数据库密码来解决了这个问题,如下所示;您还需要将端口添加到连接 . 试试这个,它工作正常 .