如何使用 Peewee 将 Jupyter 笔记本连接到远程 MySQL 数据库?

How can I connect a Jupyter Notebook to a remote MySQL DB using Peewee?

我正在尝试 Peewee 连接 MySQL 远程数据库并从中检索数据,但出现以下错误:

InternalError: (1130, "Host 'x.x.x.x' is not allowed to connect to this MariaDB server")

你能帮帮我吗?

"retrieve data from a MySQL remote database"

"Host is not allowed to connect to this MariaDB server"

似乎指出了一个简单的问题:

不允许从“外部”连接数据库。


默认情况下,MySql / MariaDB 仅在服务器的“内部”侦听,来自 MariaDb doc :

MariaDB packages bind MariaDB to 127.0.0.1 (the loopback IP address) by default as a security measure using the bind-address configuration directive.

这意味着除了 运行 在同一台机器上的应用程序(访问 127.0.0.1localhost),您将无法连接。


解决方案:

SSH 隧道

这可能是允许连接到远程数据库的最安全的方法。

SSH 是一种允许您连接到服务器的协议。它主要用于unix服务器上来管理它们,但可以做更多。

如何在你的案例中使用它?

如果可以 connect with SSH to your DB server,那么 运行在笔记本上执行这个简单的命令就可以了:

ssh -L 3306:localhost:3306 user@x.x.x.x

让我们稍微解释一下:首先,您的 运行 SSH,然后,您告诉他启用从您的 3306 端口到您服务器的 localhost:3306 端口的端口转发通过 user@IP.

连接

使用此命令 运行ning,来自 local machine:3306 的每个查询都会发送到您的 MariaDB:3306 服务器,让您可以像在服务器上一样使用它。

允许远程访问用户

这个比上一个危险得多。您需要慢慢来,思考它意味着的每一个结果

如前所述,您不能从外部连接,ssh 让您处于“内部”状态,但如果您知道自己在做什么,则可以删除安全措施。

重点是:

  • 创建一个可以从远程 IP 登录的帐户,
  • 允许 MariaDB 监听外部请求,
  • 至少,保护其他帐户以禁用远程连接。

[我现在不放操作方法,如果你真的需要它,我会更新这个答案]