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

时间:2017-05-11 09:48:39

标签: mysql database authentication jupyter-notebook peewee

我正在尝试Peewee从MySQL远程数据库连接和检索数据,但是我收到以下错误:

  

InternalError:(1130,“不允许”主机'x.x.x.x'连接到此MariaDB服务器“)

你能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

  

"从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端口到你通过{{1}连接的服务器的localhost:3306端口的端口转发}。

运行此命令后,user@IP中的每个查询都将发送到您的local machine:3306服务器,允许您像使用服务器一样使用它。

允许远程访问用户

这个比前一个更危险。你需要花时间和思考它的每一个结果

正如已经说过的那样,你不允许从外面联系,ssh让你成为"内部",但如果你知道你做了什么,你就可以删除安全性。

重点是:

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

[我现在没有提供方法,如果你真的需要它,我会更新这个答案]