Python未执行MySQLdb连接
我在用Python连接我的托管MySQL数据库时遇到了一些问题。我的代码如下:
import MySQLdb
db = MySQLdb.connect(host="xxxxxx.db.1and1.com", user="xxxxxxx",passwd="xxxxxxx", db="xxxxxxx")
我遇到了以下错误:
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
db = MySQLdb.connect(host="db518597727.db.1and1.com", user="dbo518597727", passwd="OilyOily123", db="db518597727")
File "C:\Python27\lib\site-packages\MySQLdb\__init__.py", line 81, in Connect
return Connection(*args, **kwargs)
File "C:\Python27\lib\site-packages\MySQLdb\connections.py", line 193, in __init__
super(Connection, self).__init__(*args, **kwargs2)
OperationalError: (2003, "Can't connect to MySQL server on 'xxxxxxx.db.1and1.com' (10060)")
我的SQL数据库是由1and1提供的。我确认我使用的登录信息是正确的,因为在一个PHP网站上用相同的登录信息(我已经检查了三遍)读取这个数据库时,一切都正常。
我在树莓派上(我打算在上面使用它)和我的Windows 8.1电脑上都试过,所以我很确定问题不在电脑上。
如果能得到任何帮助,我将非常感激。
非常感谢。
1 个回答
1
在 MySQL
中,用户凭证是针对每个客户端的,所以我们有几种不同类型的客户端:
- localhost
指的是和 MySQL 服务器在同一台机器上,通过 Unix Socket 连接。
- 127.0.0.1
指的是和 MySQL 服务器在同一台机器上,通过 TCP/IP 连接。
- A.B.C.D
这里的字母用 0 到 255 的数字替代,表示通过 TCP/IP 连接的客户端机器的 IP 地址。
- *
是一个通配符,表示任何客户端都可以通过 TCP/IP 使用给定的凭证连接。
在 MySQL
的用户表中,每一条记录都包含客户端的具体信息(如上所述)、用户名、密码以及其他一些不相关的字段。
所以你遇到的问题是,1and1 服务器上的 PHP 脚本可以连接到同样在 1and1 上托管的数据库,因为这个托管公司设置了他们的数据库服务器,允许来自自己服务器的有效凭证连接。
但是,对于来自未知客户端机器的连接,1and1 会认为这些凭证是无效的。
你可以做的是请求 1and1 给你的特定 IP 地址提供数据库访问权限。
你不能做的是自己解决这个问题。