【问题标题】:How can I connect a Jupyter Notebook to a remote MySQL DB using Peewee?如何使用 Peewee 将 Jupyter Notebook 连接到远程 MySQL 数据库?
【发布时间】:2017-05-11 09:48:39
【问题描述】:

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

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

你能帮帮我吗?

【问题讨论】:

  • Peewee 是一个 orm 它如何连接?
  • 我需要更多您的用例来帮助您选择最佳方式。这是一个测试,一个真正的生产项目,仅供您使用还是供许多人使用?为什么需要连接一个mysql db?

标签: mysql database authentication jupyter-notebook peewee


【解决方案1】:

“从 MySQL 远程数据库中检索数据”

“主机不允许连接到这个 MariaDB 服务器”

似乎指向一个简单的问题:

您不能从“外部”连接数据库。


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

MariaDB 包默认将 MariaDB 绑定到 127.0.0.1(环回 IP 地址),作为使用 bind-address 配置指令的安全措施。

这意味着对于在同一台机器上运行的应用程序(访问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 端口到您通过user@IP 连接的服务器的localhost:3306 端口的端口转发。

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

允许远程访问用户

这个比上一个更危险。您需要花时间考虑每一个结果意味着什么

如前所述,你不能从外部连接,ssh 让你在“内部”,但如果你知道你在做什么,你可以删除安全性。

重点是:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 2023-03-13
    • 2013-05-03
    • 2013-02-13
    • 2011-01-20
    • 1970-01-01
    • 2020-07-17
    相关资源
    最近更新 更多