Java H2混合模式(嵌入式和服务器)外接

Java H2 Mixed mode (embedded and server) external connection

我正在尝试转换我现有的嵌入式 H2 数据库并启用到它的外部连接。 目前我的属性是

spring.datasource.url=jdbc:h2:file:./db;AUTO_SERVER=TRUE;AUTO_SERVER_PORT=9090
spring.datasource.driverClassName=org.h2.Driver
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

spring.h2.console.enabled=true
spring.h2.console.path=/h2
spring.h2.console.settings.web-allow-others=true
server.ssl.enabled=true
server.ssl.key-store-password=####
server.ssl.key-password=###
server.ssl.key-store-type=JKS
etc

对于在这种模式下到我的数据库的本地连接,我似乎能够连接到 “jdbc:h2:file:./db;AUTO_SERVER=TRUE;AUTO_SERVER_PORT=9090” 通过我的智能 IDE.

如果此数据库托管在外部服务器上,我该如何连接它? 我尝试将主机名放入此 URL 中,例如 jdbc:h2:file:123.456.789.10/db;AUTO_SERVER=TRUE;AUTO_SERVER_PORT=9090 但是无法连接。

您需要在要存储数据库文件的主机上启动一个单独的 H2 服务器进程。 https://h2database.com/html/tutorial.html#using_server

之后,您将能够通过远程 URL 使用远程连接: https://h2database.com/html/features.html#database_url 您还需要从您的应用程序中删除 H2 控制台,您将能够改用服务器的 Web 界面。

不要忘记通过服务器上的 TCP 和 Web 端口启用远程访问。您还应该使用防火墙保护您的服务器,以防止来自不受信任的主机的访问。 H2 不是一个安全的容器,具有 ADMIN 权限的数据库用户可以完全访问系统 通过设计 作为服务器的帐户并且可能安全管理员允许。

AUTO_SERVER 无法通过网络工作。