HSQLDB服务器ACL不生效

Posted

技术标签:

【中文标题】HSQLDB服务器ACL不生效【英文标题】:HSQLDB server ACL takes no effect 【发布时间】:2020-04-05 14:41:16 【问题描述】:

我正在尝试在服务器模式下使用 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 提供。

我尝试过的其他事情:

This mailing list post 建议使用server.acl_filepath 而不是server.acl。行为仍然相同。 我已尝试将任一属性添加到fooserver.properties。仍然没有效果,当我停止服务器时,该属性被删除。

我错过了什么?

【问题讨论】:

【参考方案1】:

首先,如果您使用的server.properties 文件不在您执行java 命令的目录中,您应该包含该属性文件的路径。

同样的场景,在server.properties文件中,需要使用和你测试成功的路径一样的。所以应该是:

server.acl=~/workspaces/foo/db/fooserver.acl

如果您从包含这两个文件的目录发出 java 命令,则指定属性和 acl 文件会更容易。在这种情况下,您可以使用短文件名而不是完整路径。

查看指南http://hsqldb.org/doc/2.0/guide/listeners-chapt.html

【讨论】:

以上是关于HSQLDB服务器ACL不生效的主要内容,如果未能解决你的问题,请参考以下文章

nginx 配置不生效

域名解析不生效的排查思路

修改Host为啥不生效

idea web项目debug模式实时更新按钮不生效原因

技术分享 DNS解析不生效的原因及解决方法

DNS委派不生效