sudo -u postgres psql和sudo psql -u postgres有什么区别?



我是Postgres和Bash的新手,所以我不确定有什么区别。

我正在尝试在bash脚本中自动化,以更新Postgres中的表。我有.sql文件,并且我已经使用600。

创建了.pgpass文件。

提供给我的A脚本使用sudo -u postgres psql db -w < .sql,并且由于无法找到通行证而失败。

,而sudo psql -U postgres db -w < .sql没有提示通行证,并且能够更新。

那么有什么区别?为什么第一个命令不能从.pgpass获得通行证?

sudo -u postgres作为unix用户postgres

运行命令字符串的其余部分

sudo psql -U postgres db -w作为Unix用户root和(本来可以)连接到Postgres的命令,因为用户" Postgres"

可能不存在Unix用户Postgres的.pgpass文件。

这是同伴自动化的情况。如果您正在运行用户X,并且在数据库上有user X,则Postgres信任您,因此您不必使用密码(默认设置Instalation)。运行sudo psql -u x,您正在尝试将用户根到数据库连接为用户x ... root!= x,因此您需要密码。客户端身份验证由配置文件pg_hba.conf控制您还可以通过.pgpass文件提供密码。您会在PostgreSQL文档中找到所有需要的信息。

最新更新