客户端计算机上的MySQLdb可以连接到服务器计算机上的数据库吗?

时间:2014-05-30 23:56:25

标签: python mysql mysql-python

我不是网络/网络/互联网程序员,所以请原谅我在这方面的noobness。我有一个使用免费托管服务的网站。它们包括一个MySQL数据库。以下是数据库的详细信息:

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

我正在使用MySQLdb模块(安装在我的CLIENT机器上 - 而不是服务器上)来连接到这个数据库:

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)

我已经尝试了什么

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

我的想法:

  • 这可能是我的防火墙引起的吗?我正在使用我学校的互联网。我不认为这可能是因为我在客户端,所以如果它是SERVER的防火墙。

两个问题

  1. 在客户端上导入MySQL时,可以使用MySQLdb连接到SERVER上的数据库吗?
  2. 如果是的话,我做错了什么?
  3. 非常感谢您的帮助,非常感谢!被困了一整天。

2 个答案:

答案 0 :(得分:2)

出于安全原因,mysql仅侦听来自localhost的连接。错误代码10060基本上是:您不允许远程连接。

解决方案:在linux中找到my.ini(或my.cnf)并尝试查找一行:

bind-address = 127.0.0.1

这一行说:只允许本地连接。因此,您应该注释掉这一行,或者设置您的IP地址。

答案 1 :(得分:0)

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

您对connect方法的使用是正确的。

首先应检查是否可以从mysql客户端连接到远程mysql服务器。

在终端中,您可以键入mysql -h hostname -u username -p databasename 这应该提示您输入密码。输入密码。你能连接吗?

如果你无法连接,那么你有访问问题,而不是python - mysqldb问题

服务器无法访问,因为它位于防火墙后面,在这种情况下,客户端计算机的IP需要列入白名单。检查防火墙设置

或者,远程计算机上运行的mysql服务器配置为仅接受本地连接。我认为这是默认值,但我不确定。您应该ssh到运行数据库服务器的服务器远程主机,在服务器上找到my.cnf文件并检查设置。根据您的mysql版本,配置看起来会略有不同。

或者,您尝试连接的用户与您尝试连接的IP无关。 Mysql用户有两个部分,如:'username'@'host'。为了使用户能够从所有ips连接,用户需要看起来像'''''%'。

我希望我已经给你足够的力量来尝试调试这个问题。