我有一个从 DigitalOcean 租用的 Linux ubuntu 服务器,用于通过使用 Python 编码在 MySQL 中存储流式实时数据。
问题是我不是在linux服务器环境中编码,而是在我的本地计算机python(个人Windows 10(不是服务器))中编码。因此,在编码中,我需要连接到我的 Linux 服务器,以便向 Linux MySQL 服务器提供数据/从 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服务器。 “root”是我的服务器用户名 “password”是服务器和mysql的密码。 然后是我要连接的数据库的名称。
c = conn.cursor()
c.execute("SELECT * FROM practice")
这里我只想看看我在数据库中创建的“练习”表中有什么内容。
rows = c.fetchall()
for eachRow in rows:
print eachRow
我不知道出了什么问题。 为了授予我使用以下代码:
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)")
这有什么问题吗?
最佳答案
类似的问题已经被问过here 。
- 您可以从本地操作系统连接到远程数据库吗?
mysql -u XXXX -h {IP} -p
您是否已在数据库中授予您的客户权限? Digital Ocean如何做到这一点
创建远程访问用户
将表名上的选择、删除、插入、更新授予。* TO 'user'@'your_local_ip';
刷新权限;
最好不要向远程用户(脚本)授予所有权限
您的本地 IP 应该是静态 IP,否则您必须始终更改 IP 或使用 dynDNS 之类的服务。
(编辑) 我刚刚设置了一个环境:
- 如果您连接到不存在的地址或 mysql/mariadb 实例未运行,您会收到错误代码 2003。'
(2003,“无法连接到‘my_hostname’(61) 上的 MySQL 服务器”)
- 如果您是本地主机,则未获得授权,您会收到错误 1130
(1130,“主机'213.213.213.213'不允许连接到此MariaDB服务器”)
要检查是否可以访问远程 SQL 服务器,请尝试
mysql -h 123.123.123.123 -u 用户名-p
在您的本地windwos计算机上,其中123.123.123.123是您的DigitalOcean服务器的IP地址。
要获取您的公共(public) IP 地址(星巴克之外),您可以访问类似 this 的网站
如果您确实使用 0.0.0.0 作为 ip: 服务配置中的0.0.0.0作为ip地址用于绑定(bind)服务以供外部访问。 0.0.0.0就像每个ip的 clown ,但不能用于远程访问服务器/服务。
关于python - 如何连接到我的远程 SQL 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37534186/