我想与团队成员在线分享一些对PostgreSQL数据库(托管在 dockerized Debian Bullseye 上)使用watch
(如果您知道任何其他工具,最好是pgAdmin4但我无法找到一种观看实时修改的方法,请告诉我)。
目前我正在这样做:
$ PGPASSWORD=***************
$ reset
$ watch -n 1.0 "psql \
-d postgresql://postgres:${PGPASSWORD}@localhost:5432/dbname \
-c 'select id,name,customer,order,product from public.table where id in (1,2,3,4) order by (id)';"
这样密码就不会存储在 bash 历史记录中(请注意第一行前面的空格),并且在调用后在屏幕上不再可见reset
(主机在 Ubuntu 18.04 上)。
但是当watch
命令启动时,它实际上在屏幕的最顶部显示完整连接查询字符串到纯文本的“翻译”,因此显示数据库密码(或任何其他变量):
Every 1.0s: psql -d postgresql://postgres:mysecretpassword@localhost:5439/dbname -c (...)
...
有没有机会隐藏它?
答案1
是的,使用该-t
选项,如文档所述:turn off header
。
这只会打印被调用命令的输出。
更多信息:
$ watch --help
Usage:
watch [options] command
Options:
-b, --beep beep if command has a non-zero exit
-c, --color interpret ANSI color and style sequences
-d, --differences[=<permanent>]
highlight changes between updates
-e, --errexit exit if command has a non-zero exit
-g, --chgexit exit when output from command changes
-n, --interval <secs> seconds to wait between updates
-p, --precise attempt run command in precise intervals
-t, --no-title turn off header
-x, --exec pass command to exec instead of "sh -c"
-h, --help display this help and exit
-v, --version output version information and exit
For more details see watch(1).
答案2
为什么不使用pgpass 文件?我认为这样更安全。