此代码可以正常工作:
import MySQLdb
db = MySQLdb.connect("localhost", "root", "","bullsorbit")
cursor = db.cursor()
cursor.execute("Select * from table where conditions'")
numrows = int(cursor.rowcount)
print 'Total number of Pages : %d ' % numrows
但如果我提供我的IP地址
db = MySQLdb.connect("192.168.*.*", "root", "","bullsorbit")
会出现此错误
super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (2003, "Can't connect to MySQL server on 'ip address' (111)")
答案 0 :(得分:5)
Code 2003是standard MySQL client error:
错误:2003(CR_CONN_HOST_ERROR)消息:无法连接到'%s'上的MySQL服务器(%d)
我猜你的用户不允许使用iP-address连接到MySQL服务器。如果您尝试连接使用MySQL命令行客户端会发生什么?
$ mysql --host = 192.168.1.1 -u root bullsorbit
答案 1 :(得分:3)
使用localhost通过loopback-interface连接。
使用ip-addr进行连接 - 从extern连接时。
如果您的服务器仅允许本地(环回)连接 您的ip-addr连接失败。 (安全!)
查看你的mysql配置,也许只允许本地连接。
关闭了skip-networking开关(在mysql-conf中)?
#skip-networking
答案 2 :(得分:0)
而不是:
db = MySQLdb.connect("192.168..", "root", "","bullsorbit")
尝试:
db = MySQLdb.connect(user="root", host="192.168..", db="bullsorbit")
密码将默认为空字符串并尝试通常的身份方法。主机也将在默认端口上默认为localhost。
答案 3 :(得分:0)
对于2003
错误,另一种可能性是在太短的时间内尝试了太多的连接。当我将127.0.0.1
作为我的连接字符串时,我注意到了同样的行为。首先,我将其替换为localhost
,这使我更进一步,但仍然出现2003
错误。然后我看到如果我缩减调用次数,则错误完全消失。