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