我一直在阅读该.pgpass
文件,但我无法让它为我工作。
我的.pgpass
文件看起来像这样:
127.0.0.1:5432:accounts:fred:p@55w0rd
我将权限设置为0600
(这是在 CentOS Linux 上)并尝试:
psql
我在哪里得到消息:
psql:错误:致命:数据库“...”不存在
…
我的用户名在哪里。
如果我使用,我可以成功连接:
psql -u … -d accounts
所以我不认为我的.pgpass
文件正在做它的工作。
我怎样才能让它工作?
.pgpass
没有定义默认数据库。它只提供主机名、数据库和用户名组合的密码。但是,您仍然需要在启动时提供主机名、数据库和用户名
psql
。当你只是在
psql
没有任何参数的情况下运行时,你没有提供用户名或密码——而且它不是取自.pgass
——那里可能有数百个条目。应该psql
拿哪一个?如手册中所述,
psql
然后假定您当前的操作系统用户为默认用户。如果未提供数据库,则psql
假定数据库具有用户名(如果您也未提供用户名,则使用当前操作系统用户的名称)。您显然想要连接到名称与您要使用的用户名不同的数据库。因此,您必须提供数据库名称。如果
fred
是您的操作系统用户,那么psql -d accounts
应该足够了。如果要使用默认值以外的用户和数据库,请使用环境变量
PGUSER
和PGDATABASE
.