我正在尝试使用Java连接到在同一台计算机上启动的H2 Server。我以混合模式启动了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]
任何人都可以帮助我。我在这停留了两天。
答案 0 :(得分:1)
您需要在URL中使用ssl
协议而不是tcp
,因为您在服务器上使用了已加密的袜子。
"jdbc:h2:ssl://127.0.0.1/~/Data/test"
还请注意,由于安全原因,默认情况下无法在H2的最新版本中远程创建数据库。您需要在服务器端使用本地URL(例如"jdbc:h2:~/Data/test"
)创建数据库,足以打开和关闭与数据库的连接。
我也希望空密码仅用于问题中的示例代码。如果您有一个数据库,该数据库的用户具有ADMIN特权(创建数据库的第一个连接的用户名和密码用于创建该用户)和空密码或弱密码(或者如果您启用了远程数据库创建),则任何人,可以连接到该端口的用户,将拥有对服务器进程的完全访问权限,并且该进程很可能已经与您具有对系统的相同访问权限,因此您可以使用-tcpAllowOthers
和此类密码有效地创建一个远程安全漏洞。 / p>