pgsql如何使用不在pgpass.conf中且没有指定密码的用户名连接?

时间:2018-06-19 17:04:50

标签: postgresql psql

我可以使用pgpass.conf文件中没有的帐户,使用psql连接到数据库,而无需指定密码。我想被提示输入密码。这怎么可能?

psql -U mike -d employees

我已确认psql使用'mike'帐户连接:

employees=> \conninfo
You are connected to database "employees" as user "mike" on host "localhost" at port "5432".

我已经确认该帐户具有密码。

select * from pg_shadow;

postgres=# select * from pg_shadow;
     usename      | usesysid | usecreatedb | usesuper | userepl | usebypassrls |               passwd                | valuntil | useconfig
------------------+----------+-------------+----------+---------+--------------+-------------------------------------+----------+-----------
mike|    59736 | f           | f        | f       | f            | md5c223b8b4c619d6c9ffb4cf3522284be6 |          |

我已经确认我的文件系统上只有一个pgpass.conf文件。

设置:

  • Windows 10
  • x86_64-pc-mingw64上的PostgreSQL 10.4,由gcc.exe(Rev5, 由MSYS2项目构建)4.9.2,64位

1 个答案:

答案 0 :(得分:2)

在上面的评论部分由Laurenz Albe提供。

问题出在pg_hba.conf中。基本上需要更改的是

  • trust-> scram-sha-256

这是我修复它的方法。这很棘手。更改pg_hba.conf中的设置很容易。困难的部分是重新加密数据库中的现有密码以使其与新设置匹配,以便以后仍可以使用它们进行登录。

  1. 将设置保留在pg_hba.conf中。
  2. 使用以下方式连接到数据库 “ psql -U postgres”发出以下命令:
    • 将password_encryption设置为“ scram-sha-256”;
    • ALTER USER postgres,密码为“ currentPassword”;
    • 具有登录密码'mikesCurrentPassword'的ALTER ROLE Mike;
  3. 修改pg_hba.conf文件以更改“信任” 到“ scram-sha-256”。

进一步的注意:无需对服务器进行重置即可启用对pg_hba.conf所做的更改。