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

7 投票
5 回答
45455 浏览
提问于 2025-04-18 08:52

我正在尝试用 MySQL 连接和 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 个回答

-5

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

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

我也遇到过同样的错误。请仔细检查你输入的内容。主机地址必须是 127.0.0.1 这种格式。网址后面不能有 /

1

在命令中添加一个端口参数。

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

我认为问题的原因是你使用的托管服务,1and1.com,设置了一个防火墙,阻止所有外部访问他们的数据库。你必须从他们提供的网址运行代码,否则就无法正常工作。

我也在用同样的服务器,自己也是通过艰难的尝试才明白这个道理。下面是他们网页上的一段内容:

只能通过你的网站/在线存在访问数据库。请始终通过你的网站/在线存在来建立与数据库的连接。出于安全原因,无法直接访问数据库,比如通过你自己的电脑(外部 ODBC 连接)。

为了保护你的数据,你的 MySQL 数据库位于一个专用的数据库服务器上,并且这个服务器是由防火墙保护的。

4
  • 你有没有指定正确的端口?
  • 你的MySQL服务器是否在运行?
  • 有没有防火墙阻止访问?
  • 试着从你的MySQL服务器中删除匿名用户账户?

如果没有指定端口,默认的端口是3306。否则,你的代码没有问题。问题出在你的MySQL服务器上,或者是连接被你的防火墙或服务器的防火墙阻挡了。确保3306端口是开放的,没有被阻挡。

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

撰写回答