如何使用 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.1
或 localhost
),您将无法连接。
解决方案:
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 监听外部请求,
- 至少,保护其他帐户以禁用远程连接。
[我现在不放操作方法,如果你真的需要它,我会更新这个答案]
我正在尝试 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.1
或 localhost
),您将无法连接。
解决方案:
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 监听外部请求,
- 至少,保护其他帐户以禁用远程连接。
[我现在不放操作方法,如果你真的需要它,我会更新这个答案]