连接数据库时出现“接口错误:2003”

时间:2014-06-06 14:34:59

标签: python mysql database

我尝试使用MySQL Connection / Python连接到我的数据库。

这是我得到的输出:

Traceback (most recent call last):
  File "bh2000.py", line 33, in <module>
    cnx = mysql.connector.connect(**config)
  File "/Library/Python/2.7/site-packages/mysql/connector/__init__.py", line 155, in connect
    return MySQLConnection(*args, **kwargs)
  File "/Library/Python/2.7/site-packages/mysql/connector/connection.py", line 123, in __init__
    self.connect(**kwargs)
  File "/Library/Python/2.7/site-packages/mysql/connector/connection.py", line 430, in connect
    self._open_connection()
  File "/Library/Python/2.7/site-packages/mysql/connector/connection.py", line 393, in _open_connection
    self._socket.open_connection()
  File "/Library/Python/2.7/site-packages/mysql/connector/network.py", line 375, in open_connection
    errno=2003, values=(self.get_address(), _strioerror(err)))
mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on 'host xxx.db.1and1.com:3306' (8 nodename nor servname provided, or not known)

以下是我使用的代码:

import mysql.connector

cnx = mysql.connector.connect(user='xxx', password='xxx',
                              host='xxx.db.1and1.com',
                              database='xxx')
cnx.close()

我哪里错了?

5 个答案:

答案 0 :(得分:3)

  • 您是否指定了正确的端口?
  • 您的MySQL服务器是否正在运行?
  • 防火墙是否阻止访问?
  • 尝试从MySQL服务器中删除匿名用户帐户?

默认端口(如果未指定)为3306.否则您的代码没有任何问题。问题出在您的MySQL服务器上,或者您的防火墙或服务器防火墙阻止了连接。确保端口3306已打开且未被阻止。

db = mysql.connector.connect(user='xxx', password='xxx', host='xxx.db.1and1.com', port=3306)

答案 1 :(得分:0)

我相信答案是因为您使用的托管服务1and1.com使用了阻止所有外部对其数据库访问的防火墙。您必须从他们托管的网址运行代码,否则它将无法正常工作。

我使用同一台服务器,不得不自己弄清楚这个问题。以下是他们在其中一个页面上拥有的副本:

  

仅通过您的网站/状态访问数据库请始终   通过您的网站/状态与数据库建立连接。   出于安全原因,无法访问数据库   直接,例如通过本地计算机(外部ODBC   连接)。

     

为了保护您的数据,您的MySQL数据库位于专用的   受防火墙保护的数据库服务器。

答案 2 :(得分:0)

在命令中添加 port 参数。

cnx = mysql.connector.connect(user='myuser', 
        password='mypassword', host='localhost', port='3306', database='mydb')

答案 3 :(得分:-1)

我得到了同样的错误。交叉检查您输入的详细信息。主机必须采用127.0.0.1格式。网址后面不应该有/

答案 4 :(得分:-2)

如果您在同一台服务器上工作,请使用localhost而不是IP。

myConnection = mysql.connector.connect(user='uname', password='pass', host='localhost', port='3306', database='databasename')