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:
- Hibernate @OneToMany抛出MySQLSyntaxErrorException:您的SQL语法中有错误
- 从unit testing中启动和停止hsqldb
- Firebird vs Java的HSQLDB
- 针对HSQLDB测试DAO的Spring / Hibernate / Junit示例
- 我疯了吗? 将已建立的产品从HSQLDB切换到Apache Derby
- HSQLDB和Hibernate / JPA – 没有持久化到磁盘?
- 运行脚本以使用HSQLDB创建表
- 在HSQLDB 2.0.0-rc8中选择下一个序列值的“正确”方法
- 如何在Spring(4)上下文中为HSQL配置Hikari CP?