在 Postgresql 9.3 上,使用 PGPASSWORD 变量似乎不再起作用

在 Postgresql 9.3 上,使用 PGPASSWORD 变量似乎不再起作用

在 Posgresql 中,您可以设置一个名为PGPASSWORD(and ) 的变量,这样在使用 postgresql 命令(如或)PGUSER时就不必使用密码psqlpg_dump

但我有点困惑,因为我无法让它在 Postgresql 9.3.10 上运行,而且他们的网站上仍然有记录,好像它应该可以运行。

所以命令如下

PGPASSWORD=password psql -l

不管用。

我也不能事先声明它们,例如

PGUSER=root

PGPASSWORD=password

psql -l

它仍然要求输入密码(尽管在这种情况下,它应该使用 root 用户)

我让它工作的唯一方法是通过执行文件.pgpass,但它只在使用特定数据库时才有效,星号不起作用,并且它只适用于 pg_dump,而不是所有的 postgresql 命令,例如psql -l

localhost:5432:*:root:password

pg_hba.conf如果有帮助的话,这些是我的设置:

local   all             root                                md5

    # TYPE  DATABASE        USER            ADDRESS                 METHOD

    # "local" is for Unix domain socket connections only
    local   all             all                                     peer
    # IPv4 local connections:
    host    all             all             127.0.0.1/32            md5
    # IPv6 local connections:
    host    all             all             ::1/128                 md5

答案1

事实证明,使其与所有数据库和命令一起工作的方法是在 .pgpass 文件中添加以下内容:

localhost:5432:dbname:user:password localhost:5432:*:user:password

如果仅添加第二行,则不起作用,您需要添加两行。

很奇怪。

答案2

对于那些不想要 .pgpass 文件并且想要在单个命令行实例中执行的人来说,这是另一种选择。

set "PGPASSWORD=yourpass" && createdb -h localhost -p 5432 -U postgres new_db_name

我参考了几乎所有与命令行相关的解决方案,最终"在 Windows 11 中设置时使用 PGPASSWORD=yourpass 结束。

相关内容