阻止postgresql命令继续询问用户密码

时间:2011-03-12 04:21:29

标签: linux postgresql shell

这很奇怪,但我一直在寻找这种配置来源,但无法找到它。

我目前正在使用opensuse 11.3和postgresql 9。

我发出的每个postgresql命令行都会询问当前用户密码,比如psql,createdb,dropdb,我必须输入当前用户的密码(即postgres)才能使其正常工作。

执行dropdb xxx && createdb xxx会两次询问密码。

请告诉我光明!

谢谢: - )


修改

其实我已经作为postgres用户(我的linux中的用户)运行,所以我可以在不提供数据库密码的情况下使用psql,但我仍然需要为系统用户postgres提供密码。

因此,如果数据库有dbuser用户,并且运行psql作为postgres(linux用户),则会询问linux用户(postgres)的密码,而不是dbuser密码。

3 个答案:

答案 0 :(得分:8)

您可以使用以下格式的行创建~/.pgpass文件(Windows上为%APPDATA%\postgresql\pgpass.conf):

hostname:port:database:username:password

有关详细信息,请参阅the documentation

答案 1 :(得分:3)

如果您使用opensuse,则应该能够通过运行:

来创建.pgpass文件
echo "hostname:port:database:username:password" > ~/.pgpass
chmod 0600 ~/.pgpass

当然有了所有正确的信息。

答案 2 :(得分:2)

如果你有一个.pgpass文件设置允许某个用户访问某个数据库(我们称之为“myprojectdb”),请回想一下creatdbdropdb并不是真的尽管您可能要求他们创建并删除该数据库,但仍然会对“myprojectdb”执行操作。

您很可能希望将postgres的内部表添加到您的pgpass权限(postgres / templates)。另外,请不要忘记在--no-passwordcreatedb上添加dropdb选项以忽略交互式提示(请注意,只有使用-U选项指定的用户才能使用此选项修改内部postgres表)