【问题标题】:python mysql connection problempython mysql连接问题
【发布时间】:2009-07-22 09:12:14
【问题描述】:

这段代码运行良好:

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

【问题讨论】:

  • 您的服务器是否配置为允许 root 在非本地主机连接上登录?

标签: python mysql


【解决方案1】:

代码 2003 是 standard MySQL client error:

错误:2003 (CR_CONN_HOST_ERROR) 消息:无法连接到“%s”上的 MySQL 服务器 (%d)

我猜你的用户不允许使用 IP 地址连接到 MySQL 服务器。如果您尝试使用 MySQL 命令行客户端连接会发生什么?

$ mysql --host=192.168.1.1 -u root bullsorbit

【讨论】:

  • ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.5.23' (111)
  • 所以你的问题与Python无关。您必须授予用户从本地计算机的 IP 地址连接的权限。
【解决方案2】:

通过环回接口连接本地主机。

使用 ip-addr 连接 - 当您从外部连接时。

如果您的服务器仅允许本地(环回)连接 您的 ip-addr 连接失败。 (安全!)

查看你的 mysql 配置,可能只允许本地连接。

skip-networking 开关是否关闭(在 mysql-conf 中)?

#skip-networking

【讨论】:

    【解决方案3】:

    对于2003 错误,另一种可能是在太短的时间内尝试了太多的连接。当我将127.0.0.1 作为连接字符串时,我注意到了同样的行为。首先,我用localhost 替换它,这让我更进一步,但仍然是相同的2003 错误。然后我看到,如果我缩减调用次数,错误就会完全消失。

    【讨论】:

      【解决方案4】:

      代替:

      db = MySQLdb.connect("192.168..", "root", "","bullsorbit")

      尝试:

      db = MySQLdb.connect(user="root", host="192.168..", db="bullsorbit")

      密码将默认为空字符串并尝试通常的身份验证方法。主机也将默认为默认端口上的 localhost。

      【讨论】:

      • 您好,感谢您的回复..我尝试了两个我会给出相同的错误信息
      猜你喜欢
      • 2018-08-21
      • 2011-09-01
      • 1970-01-01
      • 2010-09-23
      • 2011-02-16
      • 1970-01-01
      • 2011-05-17
      相关资源
      最近更新 更多