【问题标题】:H2 Database Auto Server mode : Accessing through web console remotelyH2 数据库自动服务器模式:通过 Web 控制台远程访问
【发布时间】:2016-07-18 13:14:27
【问题描述】:

我对@9​​87654323@ 还很陌生。作为 PoC 的一部分,我使用 H2 数据库(版本:1.4.187)来模拟 MS SQL Server DB。我有一个应用程序,比如说 app1,它生成数据并保存到 H2 中。另一个应用程序 app2 需要从 H2 数据库中读取并处理它读取的数据。我正在尝试使用Auto Server mode,这样即使其中一个应用程序关闭,另一个应用程序也能够读取/写入数据库。

在阅读了多个示例后,我找到了如何构建 h2 url,如下所示:

jdbc:h2:~/datafactory;MODE=MSSQLServer;AUTO_SERVER=TRUE;

启用 tcp 和远程访问如下:

org.h2.tools.Server.createTcpServer("-tcpAllowOthers","-webAllowOthers").start()

有了这个,我可以写入数据库。现在,我想使用h2-web-console 应用程序读取数据。我可以从我的本地机器上做到这一点。但是,我无法理解如何从另一台机器远程连接到该数据库。

我的工厂是在 ubuntu 机器上运行这两个应用程序,我可以使用机器上的 Web 控制台监控数据。这种方法不可能吗? 我该如何解决这个问题?

或者我需要使用服务器模式并显式启动 h2 服务器吗?任何帮助将不胜感激。

【问题讨论】:

  • 在 H@ 文档中发现以下行,不支持显式客户端/服务器连接(使用 jdbc:h2:tcp:// 或 ssl://)。内存数据库不支持此模式。。见Automatic Mixed Mode。也许这就是您无法连接到它的原因。似乎端口也是随机选择的。使用此功能时,默认情况下服务器使用任何空闲的 TCP 端口。可以使用AUTO_SERVER_PORT手动设置端口。
  • 虽然以下问题以 how-to-run-h2-database-in-server-mode 异常开头,但它似乎正在建立连接,因此它可以为您提供有关 URL 外观的提示。

标签: java scala h2


【解决方案1】:

默认情况下,为保护 H2 数据库禁用远程连接。要启用对 TCP 服务器的远程访问,您需要使用选项 -tcpAllowOthers 或其他标志 -webAllowOthers-pgAllowOthers 启动 TCP 服务器 .

要同时启动 Web 控制台服务器(H2 控制台工具)和启用远程连接的 TCP 服务器,您必须使用如下所示的内容

java -jar /path/to/h2.jar -web -webAllowOthers -tcp -tcpAllowOthers -browser

更多信息可以在docs here找到,控制台设置可以配置from here

【讨论】:

  • 是的,我做到了。我的困惑是如何从 Web 控制台上的远程计算机访问它们。没有得到正确的网址
  • 我的 h2 应用程序在 ubuntu 机器上运行(没有 UI 访问,只有 ssh)。应用程序会将数据插入到 H2,这是该 ubuntu 机器中的本地文件。我想在我的机器上查看网络控制台中的数据。
  • 您尝试了网址jdbc:h2:tcp://host_of_server:port/~/datafactory 吗?服务器系统上的防火墙是否正确配置?端口是否对另一台机器开放?
  • 试过了,但无法访问。我没有使用服务器模式,而是使用自动混合模式h2database.com/html/features.html#auto_mixed_mode。它说你可以从任何具有相同 url 的机器访问,但无法理解如何构建 url
  • jdbc:h2:tcp://192.168.1.50/datafactory;IGNORECASE=TRUE;AUTO_SERVER=TRUE
【解决方案2】:

不完全确定,但查看之前回答的有关同一主题的文档和其他问题,网址应该是这样的:

jdbc:h2:tcp://<host>:<port>/~/datafactory;MODE=MSSQLServer;AUTO_SERVER=TRUE;

看来主机可能不是localhost,数据库可能不在内存中

【讨论】:

    【解决方案3】:

    是否需要 H2 Web 控制台?

    您可以通过已启动的 TCP 服务器使用不同的 SQL 工具。我使用 SQuirreL SQL Client (http://squirrel-sql.sourceforge.net/) 连接到不同的数据库。

    如果您需要一个网络界面,您可以使用 Adminer (https://www.adminer.org/),它可以连接到不同的数据库供应商,包括 MS SQL,这恰好是您运行 H2 的模式。有一个适用于 Ubuntu 的 Debian Adminer 软件包。

    【讨论】:

      猜你喜欢
      • 2010-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-05
      • 1970-01-01
      • 2011-08-07
      • 2014-12-30
      • 2012-08-17
      相关资源
      最近更新 更多