H2 客户端无法连接到服务器
Posted
技术标签:
【中文标题】H2 客户端无法连接到服务器【英文标题】:H2 Client couldn't connect to the server 【发布时间】:2019-10-15 16:40:16 【问题描述】:我正在尝试使用 java 连接到在同一台机器上启动的 H2 服务器。我以混合模式启动了 H2 服务器。连接到服务器时出现错误。
启动服务器的代码是:
Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpSSL").start();
连接服务器的代码是:
Class.forName("org.h2.Driver");
Connection conn = DriverManager.getConnection("jdbc:h2:tcp://127.0.0.1/~/Data/test", "", "");
错误是:
连接中断:“意外状态 352518912”[90067-197]
请任何人帮助我。我被困在这两天了。
【问题讨论】:
【参考方案1】:您需要在 URL 中使用ssl
协议而不是tcp
,因为您在服务器上使用了加密的 socked。
"jdbc:h2:ssl://127.0.0.1/~/Data/test"
还请注意,由于安全原因,在 H2 的最新版本中,默认情况下无法远程创建数据库。您需要在服务器端使用"jdbc:h2:~/Data/test"
等本地url创建数据库,打开和关闭与它的连接就足够了。
我还希望空密码仅适用于问题中的示例代码。如果您的数据库具有具有 ADMIN 权限的用户(创建数据库的第一个连接的用户名和密码用于创建此类用户)和空密码或弱密码(或者如果您启用远程数据库创建),任何人,谁可以连接到该端口,将获得对您的服务器进程的完全访问权限,并且该进程很可能已经拥有与您相同的系统访问权限,因此您使用-tcpAllowOthers
和此类密码有效地创建了一个远程安全漏洞。
【讨论】:
以上是关于H2 客户端无法连接到服务器的主要内容,如果未能解决你的问题,请参考以下文章
Socket.io 客户端在突然断开连接后无法重新连接到服务器