在脚本中向 HSQLDB SqlTool 提供密码

Supply password to HSQLDB SqlTool in a script

我是 运行 作为系统服务的服务器模式下的 HSQLDB 实例。要关闭它,我发出以下命令:

java -cp $CLASSPATH:/usr/share/java/hsqldbutil.jar:/usr/share/java/hsqldb.jar "org.hsqldb.cmdline.SqlTool" --inlineRc=url=jdbc:hsqldb:hsql://localhost/$DB_NAME,user=SA,password=`cat ~/SA.pwd` --sql="SHUTDOWN;"

正如在命令中看到的那样,我以用户 SA 的身份连接,并使用从文件中读取的密码(只有该特定用户可以读取),并在 JDBC URL 中指定两者.

只要 SA 的密码为空,我就可以在命令中提供 password=

但是,如果 SA 有一个真实的密码并且我在此处提供了它,这将失败并显示错误消息:

'password' element must have empty value. For non-empty password, give no password element and you will be prompted for the value.

有没有办法以非交互方式提供密码?

如果您使用 sqltool.rc 文件而不是 --inline-rc,它会起作用。将包含以下内容的文件放在将发出停止命令的帐户的主文件夹中:

urlid my-server
url jdbc:hsqldb:hsql://localhost/db_name
username SA
password CorrectHorseBatteryStaple

然后修改命令行如下:

java -cp $CLASSPATH:/usr/share/java/hsqldbutil.jar:/usr/share/java/hsqldb.jar "org.hsqldb.cmdline.SqlTool" --sql="SHUTDOWN;" my-server

其中:

  • my-server是你在sqltool.rc中定义的任意标识符,在SqlTool
  • 的命令行调用中引用
  • db_name是启动时分配的数据库名
  • CorrectHorseBatteryStaple 是 SA 密码(当前存储在 ~/SA.pwd 中)。

根据您的系统更改这些。由于 sqltool.rc 包含凭据,请确保像 ~/SA.pwd.

一样锁定其权限