【问题标题】:Jaspersoft/Pentaho - connect to MySQL via SSHJaspersoft/Pentaho - 通过 SSH 连接到 MySQL
【发布时间】:2014-11-24 22:58:20
【问题描述】:

我正在寻找一种方法来从我的 localhost:8081 (jasperserver) 连接到我的 mysql DB 所在的远程服务器。我在 MySQL Workbench 中通过 SSH(唯一方式)连接到数据库,效果很好。 我做了很多研究,我发现我需要在我的本地机器上建立一个 SSH 隧道,但是怎么做呢?如何通过 ssh 连接到我的 jasperserver?当我尝试 ssh localhost:8081 时,它给了我“连接被拒绝”。我已经为 windows 安装了 openssh。 我也试过Pentaho,工作原理和jasper差不多,连接方法也是一样的。 谢谢...

【问题讨论】:

  • 您想使用ssh的原因是什么?您不能直接访问远程服务器,因为这应该是首选方式。如果您出于安全原因需要这样做,您可以直接建立ssh,而无需让您的本地 Pentaho 服务器为您执行此操作。建立链接后,任何进程都可以使用转发的端口。
  • 事情是我被告知 ssh 是我可以连接数据库的唯一方法。我无法仅与主机和用户连接。所以我必须通过 ssh 来做到这一点。而且我不知道如何正确地建造这条隧道。
  • 你能从终端建立到远程服务器的 ssh 连接吗?
  • 我通过 Git Bash 命令行在同一台服务器上使用 git repo,通过 ssh 连接。我还为该服务器设置了 filezilla SFTP,工作正常。

标签: mysql ssh pentaho jasperserver ssh-tunnel


【解决方案1】:

正确建立隧道的方法如下:

ssh <user>@<host that has access to database> -L <local port>:<db server>:<remote port>

然后你连接到localhost:&lt;local port&gt;。

示例:您的数据库服务器 db.mydomain.com 在端口 3306 上运行,但您无法访问它。您首先需要ssh 到另一台机器myproxy.mydomain.com,作为用户“用户名”,该用户可以访问数据库服务器上的端口 3306。在那台机器上,试试

mysql -h db.mydomain.com -P 3306 -u <your db username> -p<your db password> <db name>

验证对数据库的访问。然后开始设置隧道:

ssh username@myproxy.mydomain.com -L 3306:db.mydomain.com:3306

一旦建立 SSH 连接,您就可以使用 URL localhost:3306 或 127.0.0.1:3306 连接到您的数据库。

隧道所做的是将流量重定向到本地计算机上的端口 3306 到远程数据库服务器的端口 3306,使用您的代理计算机作为中继。

【讨论】:

  • 我正在尝试使用 SSH 隧道访问数据库,凭据很好,因为我已经在 MYSQL GUI 客户端上对此进行了测试,我刚刚使用命令行和命令行连接到服务器的端口进行了测试也可以完美地工作。但是当我尝试使用 pentaho 连接到数据库服务器时,它给出了错误,因为用户'stats'@'localhost'的访问被拒绝(使用密码:YES)然后我使用 JNDI 并在那里提供了凭据,但它仍然不起作用。
猜你喜欢
  • 2021-08-07
  • 2021-11-01
  • 1970-01-01
  • 2014-02-18
  • 2016-08-13
  • 1970-01-01
  • 2020-10-10
  • 1970-01-01
  • 2019-02-06
相关资源
最近更新 更多