客户端的MySQLdb能连接到服务器上的数据库吗?

1 投票
2 回答
1008 浏览
提问于 2025-04-18 08:06

我不是网络或网页程序员,所以请原谅我在这方面的无知。我用一个免费的托管服务搭建了一个网站,他们提供了一个MySQL数据库。以下是这个数据库的详细信息:

port = 3306
host = "fdb4.biz.nf"
database = "1284899_6067"
user = "1284899_6067"
password = "somepass9351"

我在我的客户端机器上使用MySQLdb模块(不是在服务器上)来连接这个数据库:

db = MySQLdb.connect(host=host, user=user, passwd=password, db=database,port=port)

但是我遇到了以下错误:

OperationalError: (2003, "Can't connect to MySQL server on 'fdb4.biz.nf' (10060)

我已经尝试过的事情

  • 尝试了两个来自不同主机的数据库
  • 尝试更改端口
  • 在StackOverflow上搜索类似的答案,但其他人都连接到“本地主机”

我认为:

  • 这可能是我的防火墙造成的吗?我在学校的网络上。我觉得这不太可能,因为我是在客户端,所以如果有问题,应该是服务器的防火墙。

两个问题

  1. MySQLdb可以用来连接服务器上的数据库吗?如果它是在客户端导入的?
  2. 如果可以,那我哪里做错了?

非常感谢任何帮助,我非常感激!我今天整整一天都被这个问题困住了。

2 个回答

0

是的,MySQLdb可以连接到远程主机。

你使用的连接方法是正确的。

首先,你应该检查一下能否从你的MySQL客户端连接到远程的MySQL服务器。

在终端中,你可以输入mysql -h 主机名 -u 用户名 -p 数据库名。这会提示你输入密码。输入密码后,你能连接上吗?

如果连接不上,那就说明你有访问权限的问题,这和Python或MySQLdb没有关系。

可能是服务器无法访问,因为它被防火墙挡住了。在这种情况下,你需要把你客户端机器的IP地址添加到白名单中。检查一下你的防火墙设置。

或者,远程机器上的MySQL服务器被设置为只接受本地连接。我觉得这可能是默认设置,但我不太确定。你应该通过SSH登录到运行数据库服务器的远程主机,找到服务器上的my.cnf文件,检查一下设置。根据你的MySQL版本,配置可能会稍有不同。

另外,你尝试连接的用户可能没有和你连接时使用的IP地址关联。MySQL用户有两个部分,像这样:'用户名'@'主机'。要让一个用户可以从所有IP连接,用户需要像这样设置:'用户'@'%'。

希望我提供的信息能帮助你调试这个问题。

2

出于安全考虑,mysql只接受来自本地的连接。错误代码10060基本上就是这个意思:你不被允许进行远程连接。

解决办法是:找到一个my.ini(在Linux上是my.cnf)文件,然后找一行:

bind-address = 127.0.0.1

这一行的意思是:只允许本地连接。所以,你应该把这一行注释掉,或者设置你的IP地址。

撰写回答