如何连接到我的远程SQL服务器

时间:2016-05-30 22:09:21

标签: python linux server

我有一台Linux ubuntu服务器,我从DigitalOcean租用,用于通过python编码在MySQL中存储流实时数据。

问题是我不是在linux服务器环境中编码,而是在我的本地计算机python(个人Windows 10(不是服务器))中编码。所以在编码中,我需要连接到我的linux服务器,以便向/从linux MySQL服务器提供/获取数据。

我知道我需要在python中使用MySQLdb库来执行此操作。我试图通过在python中使用这个MySQLdb连接到我的linux服务器,但它无法连接到服务器。

另一个问题: 为了授予我连接到mysql服务器的其他ip地址,我应该在每次IP地址更改时执行此操作吗?例如,当我在家工作时,我需要授予我的家庭互联网IP,当我在其他地方工作时,我是否需要授予该IP地址?

无论如何,我尝试授予我连接到互联网的IP地址,但即使在授予后我也无法访问mysql服务器.4

我该怎么办?

这是我使用的代码;

import MySQLdb


conn = MySQLdb.connect("000.000.000.0", "root", "password", "name of database")

" 000.000.000.0"是我租用的服务器,它是一个Linux服务器。 "根"是我的服务器用户名 "密码"是服务器以及mysql的密码。  然后是我想要连接的数据库的名称。

c = conn.cursor()

c.execute("SELECT * FROM practice")

在这里,我只想看看"练习"中的内容。我在数据库中创建的表。

rows = c.fetchall()

for eachRow in rows:
    print eachRow

我不知道出了什么问题。 对于Granting,我使用了以下代码:

 GRANT ALL ON nwn.* TO new_username@'00.000.000.00' IDENTIFIED BY 'new_password';

ip地址00.000.000.000是星巴克的IP地址,我现在正在处理这个项目。我收到这样的消息:

 Query OK, 0 rows affected, 1 warning (0.03 sec)

之后我尝试在我的本地窗口python上连接python。它没有工作并且得到了这个python错误:

OperationalError: (2003, "Can't connect to MySQL server on '000.000.000.0' (10061)")

这有什么问题?

1 个答案:

答案 0 :(得分:-1)

类似的问题已被提出here

  • 您可以从本地操作系统连接到远程数据库吗? mysql -u XXXX -h {IP} -p
  • 您是否已在数据库中授予您的客户? Digital Ocean如何为此

  • 为远程访问创建用户

  • GRANT SELECT,DELETE,INSERT,UPDATE ON tablename.* TO 'user'@'your_local_ip';

  • FLUSH PRIVILEGES;

最好不要为远程用户(脚本)授予所有权限

您的本地IP应该是静态IP,否则您总是更改IP或使用像服务这样的dynDNS。

(编辑) 我只是建立了一个环境:

  • 如果您连接的地址不存在或者mysql / mariadb实例未运行,则会收到错误代码 2003 。'

(2003, "Can't connect to MySQL server on 'my_hostname' (61)")

  • 如果您未授予本地主机权限,则会收到错误 1130

(1130, "Host '213.213.213.213' is not allowed to connect to this MariaDB server")

要检查您是否可以访问远程sql服务器,请尝试

mysql -h 123.123.123.123 -u username -p

在您当地的windwos机器上,其中123.123.123.123是您的DigitalOcean服务器的IP地址。

要获取公共IP地址(星巴克之外),您可以访问this

等网站

如果你真的使用0.0.0.0作为ip: 服务配置为0.0.0.0,因为IP地址用于绑定服务以进行外部访问。 0.0.0.0就像每个ip的小丑一样,但不能用于远程访问服务器/服务。