如何在没有PG服务器和Web控制台的情况下启动H2数据库命令行?



我在一台AWS EC2机器上有H2数据库v1.4.199,我想通过命令行以TCP模式启动,但看起来默认情况下PG服务器和Web控制台也启动了,这是我不想要的。

我使用一个非常基本的命令来设置端口。下面是命令和输出:

$ java -cp h2*.jar org.h2.tools.Server -tcpPort 9092
TCP server running at tcp://10.1.64.202:9092 (only local connections)
PG server running at pg://10.1.64.202:5435 (only local connections)
Web Console server running at http://10.1.64.202:8082 (others can connect)
Failed to start a browser to open the URL http://10.1.64.202:8082: Browser detection failed, and java property 'h2.browser' and environment variable BROWSER are not set to a browser executable.

您可以看到PG服务器和控制台服务器已启动,但我认为PG服务器和Web控制台是您必须显式启用的东西?我也做想要外部连接到这个H2(我的Java应用程序在同一个EC2上),所以看到控制台配置为"其他人可以连接"。

启动H2以使其更受限制和更安全的正确方法是什么?

关于更多上下文,本地主机上的Java应用程序将使用以下代码进行连接:
String url = "jdbc:h2:tcp://localhost:9092/" + filePath + ";MODE=MYSQL;AUTO_RECONNECT=TRUE;DB_CLOSE_ON_EXIT=FALSE";
return DataSourceBuilder.create()
.username("sa")
.url(url)
.driverClassName(org.h2.Driver.class.getName()).build();

Java应用程序连接得很好,但它不应该需要PG服务器和web控制台才能工作。

服务器的帮助选项可能会提供一些指导:

java -cp h2.jar org.h2.tools.Server -?

输出包括:

Starts the H2 Console (web-) server, TCP, and PG server.
Usage: java org.h2.tools.Server <options>
When running without options, -tcp, -web, -browser and -pg are started.
…

解决方案是显式地启动TCP服务器:

java -cp h2.jar org.h2.tools.Server -tcp -tcpPort 9092

相关内容