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

时间:2016-11-30 00:54:54

标签: linux bash postgresql

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

我正在尝试在更新Postgres中的表的bash脚本中自动执行。我有.sql文件,我用600创建了.pgpass文件。

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

然而,sudo psql -U postgres db -w < .sql没有提示传递并且能够更新。

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

2 个答案:

答案 0 :(得分:2)

sudo -u postgres正在以UNIX用户postgres

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

sudo psql -U postgres db -w正在以UNIX用户root运行该命令,并且(假设)以用户身份连接到postgres&#34; postgres&#34;

对于unix用户postgres,.pgpass文件可能不存在。

答案 1 :(得分:0)

这是对等身份验证的情况。如果您正在运行用户x,并且您的数据库上有用户x,那么您将受到postgres的信任,因此您不必使用密码(默认设置为instalation)。运行sudo psql -u x你试图从用户root到数据库连接为用户x ... root!= x所以你需要密码。客户端身份验证由configuration file pg_hba.conf控制您还可以提供密码via .pgpass file。您可以在PostgreSQL文档中找到所有需要的信息。

相关问题