在 Posgresql 中,您可以设置一个名为PGPASSWORD
(and ) 的变量,这样在使用 postgresql 命令(如或)PGUSER
时就不必使用密码psql
pg_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 结束。