为什么在 PostgreSQL 中带有标志 password/locahost 的权限被拒绝错误?

Why permission denied error with flags password/locahost in PostgreSQL?

数据库 检测器 存在,由 psql 中的 \l 验证。 用户 postgres 已通过 SELECT * FROM pg_user; 验证。

#1 测试[已解决]

我运行

sudo -u postgres psql detector -c "SELECT * FROM pg_user"

但得到

could not change directory to "/home/masi/det": Permission denied

同时获得用户的正确输出 table。

Fabricio 的回答和评论中的解决方案 即重启shell;以前 运行 标志 --password 导致奇怪的行为。

#2 测试[已解决]

其他奇怪的测试。我运行

sudo -u postgres psql detector --password -h localhost -c 'SELECT * FROM pg_user;'

虽然我是本地主机,但它给出了以下内容。

psql: FATAL:  password authentication failed for user "postgres"
FATAL:  password authentication failed for user "postgres"

Fabricio 的回答和评论中的解决方案 即重新启动 shell 并且不要将标志 --password 与 sudo 一起使用。 不要将标志 -h localhost 与 sudo 一起使用。

为什么会出现权限被拒绝的错误?

您在 /home/masi/det_78_2015 启动 psql 命令时。由于启动命令的用户是postgres,因此不允许查看您当前所在的主目录。这就是命令成功但抛出目录权限错误的原因。

postgres 用户在系统中有主目录吗?