在脚本中向 HSQLDB SqlTool 提供密码
Posted
技术标签:
【中文标题】在脚本中向 HSQLDB SqlTool 提供密码【英文标题】:Supply password to HSQLDB SqlTool in a script 【发布时间】:2020-05-16 16:42:00 【问题描述】:我在服务器模式下将 HSQLDB 实例作为 systemd 服务运行。要关闭它,我发出以下命令:
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' 元素必须为空值。对于非空密码,不提供密码元素,系统将提示您输入值。
有没有办法以非交互方式提供密码?
【问题讨论】:
【参考方案1】:如果您使用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
一样。
【讨论】:
以上是关于在脚本中向 HSQLDB SqlTool 提供密码的主要内容,如果未能解决你的问题,请参考以下文章