`watch` PostgreSQL 查询而不显示完整的连接字符串

`watch` PostgreSQL 查询而不显示完整的连接字符串

我想与团队成员在线分享一些对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 文件?我认为这样更安全。

相关内容