HSQLDB服务器模式用户名/密码

如果我使用Java代码在服务器模式下启动HSQLDB,则服务器启动没有任何问题。 但是,当我尝试通过Java代码或通过HSQLDB DatabaseManagerSwing连接到同一个时; 我无法连接。

我在仅内存模式下使用user = conn1和password = conn1启动服务器。 但是当连接到服务器时它给了我以下exception:

java.sql.SQLInvalidAuthorizationSpecException: invalid authorization specification - not found: conn1 

我只能通过提供user = SA和空密码来连接。 我在Windows7机器上使用HSQLDB 2.2.5和JRE1.7。

谁能告诉我我哪里做错了?

如果您使用2.2.6尝试此操作,您可能会收到一条错误消息,因为您的服务器属性不正确。 属性“server.username”和“server.password”无效。 dbname.0属性必须为小写。

如果要使用SA以外的用户名创建服务器数据库,可以将用户和密码附加到数据库路径:

 server.database.0 = file:E:/DB/myDB;user=test;password=test server.dbname.0 = mydb 

服务器关闭后,无需包含用户和密码。 凭据仅用于创建数据库。 之后,在与服务器建立连接时检查凭据。

出现你遇到的问题(至少最初)是,对于内存数据库中的HSQL,用户名“必须是”sa(不区分大小写,或者为空,这意味着“默认” 是sa )。 您可以使用空密码或指定密码。 如果您指定了密码,并希望稍后重新连接到相同的(内存中)数据库,则必须重新使用相同的密码。 如果您想使用SA以外的用户,您可能必须先连接到数据库并执行一些“创建用户”类型命令。 然后使用该用户重新连接(假设您的数据库全部在内存中)。

您可以使用多个不同的内存数据库(如果这是您要通过指定其他用户来完成的),如下所示:

 // change the MySpecialTestDb String for multiple different in memory databases // or reuse the same value // to reconnect to a previously created in memory database [ie within the same process previously]. String DB_CONNECTION_STR = "jdbc:hsqldb:mem:MySpecialTestDb"; String DB_USERNAME_STR = "sa"; String DB_USERNAME_PASSWORD = ""; DriverManager.getConnection(DB_CONNECTION_STR, DB_USERNAME_STR, DB_USERNAME_PASSWORD); 

参考: http : //www.hsqldb.org/doc/1.8/guide/guide.html#advanced-chapter

或者,如果您只想“重置”内存数据库,例如每个unit testing之间,请参阅此处 。

要点1)无论何时创建数据库,都必须指定用户名和密码。 你可以把它保持空白; 但是在连接到服务器时必须使用相同的用户名和密码。

如果您观察数据库的脚本文件,您可以看到如下命令: –

 CREATE USER "usr" PASSWORD DIGEST '9003d1df22eb4d3820015070385194c8' ALTER USER "usr" SET LOCAL TRUE GRANT DBA TO "usr" 

我创建了用户名为“usr”的DB,因此它出现在这些命令的脚本文件中。 现在,在启动服务器时,我不需要指定用户名或密码。 它会忽略这些信息。

连接服务器时,您必须提供完全相同的用户名和密码,您在创建数据库时给出了。

要点2)确保数据库文件的路径中没有空格。 如果有空格,则用双引号括起整个路径。 我努力找出这个愚蠢的错误。

现在,如果我启动服务器将低于命令它正确启动

1)转到HSQL的lib

 cd C:\Users\owner\Documents\Java Project\hsqldb-2.2.9\hsqldb\lib 

然后给命令

 java -cp hsqldb.jar org.hsqldb.Server -database.0 file:"C:\Users\owner\Documents\Java Project\hsqldb-2.2.9\TmpDBLocation\myKauDB" -dbname.0 xdb 

2)在其他命令提示符下转到lib位置

 cd C:\Users\owner\Documents\Java Project\hsqldb-2.2.9\hsqldb\lib 

然后通过在其他命令提示符窗口中发出命令来连接HSQL DB的Swing UI

 java -cp hsqldb.jar org.hsqldb.util.DatabaseManagerSwing --driver org.hsqldb.jdbcDriver --URL jdbc:hsqldb:hsql://localhost/xdb --user "usr" --password "" 

在我的全新2.3.2安装中,点击bin/runServer.bat ,我设法连接(使用Squirrel)使用:

 URL: jdbc:hsqldb:hsql://localhost:9001 User: SA Password: