我尝试使用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()
我哪里错了?
答案 0 :(得分:3)
默认端口(如果未指定)为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')