我有一组hsqldb格式的数据库文件(即.data
,.properties
和.script
文件),但之前管理它们的人退出并且没有留下任何凭据。当我尝试使用任何方式连接到数据库来访问独立的基于文件的数据库(例如SqlTool或DatabaseManager),传递默认的“sa”用户和默认的空密码时,我得到类似的东西:
java.sql.SQLException: User not found: SA at org.hsqldb.jdbc.Util.sqlException(Unknown Source) at org.hsqldb.jdbc.jdbcConnection.(Unknown Source) at org.hsqldb.jdbcDriver.getConnection(Unknown Source) at org.hsqldb.jdbcDriver.connect(Unknown Source) at java.sql.DriverManager.getConnection(DriverManager.java:582) at java.sql.DriverManager.getConnection(DriverManager.java:185) ...
有没有办法轻松绕过整个hsqldb身份验证和授权方案,只是重置“sa”用户的完整权限?我已经挖掘了整个hsqldb文档并对谷歌进行了一些研究,但我找不到任何方法可以绕过它?
或者没有暴力破坏是完全不可能的(即文件实际上是加密的使用给定的密码)? This question提到密码存储在.script
文件中,但看起来我所拥有的密码设置为COMPRESSED
或BINARY
格式(我无法分辨哪一个)虽然我在SET SCRIPTFORMAT
文件中看到了原始的实时字符串数据,但是使用.data
命令。是否可以解密BINARY格式?
答案 0 :(得分:1)
如果在.data文件中看到明文字符串,则表示数据库未加密。
由于HSQLDB是opensource,您可以编辑源以在打开数据库时将用户名和密码打印到控制台。为此目的找到名为User
的类。使用加密数据库无法做到这一点,加密数据库在没有加密密钥的情况下根本无法打开。