在PostgreSQL中添加无密码用户

3
我在Windows机器上安装了PostgreSQL v12。我看了Postgres的文档,他们使用命令行工具指令,例如create user <username>等等。虽然我运行了这些指令,但我仍然没有登录成功。系统提示:
fe_sendauth: no password supplied

Sql Shell

如何在Postgres psql shell中添加一个无密码的用户?


1
另一种解决方案是使用\password user1设置密码。 - Laurenz Albe
3个回答

6

如果您不想被提示输入密码,您需要在您的pg_hba.conf文件中为该用户进行授权。

例如:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

host    all             user1           0.0.0.0/0               trust
host    all             all             127.0.0.1/32            md5

以“host”开头的第一行使用了“trust”方法,这意味着用户不需要验证即可通过。您可以根据需要更改任何其他参数,但只要它们首先满足此规则,其他规则就不会要求输入密码。 一旦您进行了此更改,就需要重新加载服务才能生效。


pg_hba.conf 文件位于哪个目录? - Anupam Haldkar
1
根据您的发行版设置方式而定,但通常位于数据目录中与 posgresql.conf 并列。在某些发行版中,它可以在 /etc/postgresql/ 下找到。如果您想知道它的位置,可以在 psql 中运行 SHOW data_directory; - Thom Brown
1
我已经更新了示例以说明您需要进行的更改。 以“host”开头的第一行是您需要添加的行。 在此情况下,后续行需要保留在文件中未编辑。 请注意,示例显示了一种“信任”的方法,表示不提示输入密码。 显示“md5”的行表示它将提示输入密码(使用md5哈希将其发送到数据库)。 - Thom Brown

0
在Windows 11中,似乎本地主机的连接默认为IPv6地址,因此您需要添加以下这行代码:
# IPv6 local connections:
host    all             user1             ::1/128                 trust

0
你可以利用.pgpass文件来自动提供密码给postgresql命令。
创建一个文件~/.pgpass,并添加以下内容:
localhost:*:*:username:

这是指如果你想更具体一些,hostname:port:database:username:password

https://www.postgresql.org/docs/current/libpq-pgpass.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接