我正在尝试在服务器模式下使用HSQLDB,但无法使ACL正常工作。
我使用此命令行启动了服务器(创建新数据库):
java -cp $CLASSPATH:/usr/share/java/hsqldb.jar org.hsqldb.server.Server --database.0 file:~/workspaces/foo/db/fooserver --dbname.0 fooserver
我可以使用HSQL数据库管理器连接到它并发出SHUTDOWN
。
接下来,我在~/workspaces/foo/db/fooserver.acl
中创建了一个具有以下内容的ACL文件:
deny 127.0.0.1
我用java -cp $CLASSPATH:/usr/share/java/hsqldb.jar org.hsqldb.server.ServerAcl ~/workspaces/foo/db/fooserver.acl
成功地对其进行了测试,它告诉我127.0.0.1被拒绝访问。
现在我创建了~/workspaces/foo/db/server.properties
(因为还没有server.properties
文件),其内容如下:
server.acl=traffserver.acl
但是,当我现在启动服务器时,我仍然可以连接到数据库。
HSQLDB版本是2.4.1,随Ubuntu 18.04一起提供。
我尝试过的其他方法:
server.acl_filepath
而不是server.acl
。行为仍然相同。fooserver.properties
。仍然没有效果,当我停止服务器时,该属性将被删除。我想念什么?
首先,如果使用的server.properties
文件不在执行java
命令的目录中,则应包括该属性文件的路径。
在相同情况下,在server.properties文件中,您需要使用成功测试的相同路径。所以应该是:
server.acl=~/workspaces/foo/db/fooserver.acl
如果从包含两个文件的目录中发出java命令,则指定属性和acl文件会更容易。在这种情况下,您可以使用短文件名而不是完整路径。