python mysql连接问题

时间:2009-07-22 09:12:14

标签: python mysql

此代码可以正常工作:

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)")

4 个答案:

答案 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错误。然后我看到如果我缩减调用次数,则错误完全消失。