【问题标题】:FATAL: password authentication failed for user "postgres" (postgresql 11 with pgAdmin 4)致命:用户“postgres”的密码验证失败(带有 pgAdmin 4 的 postgresql 11)
【发布时间】:2019-07-29 01:16:52
【问题描述】:

我最近安装了 Postgresql 11,在安装过程中,没有输入 Postgres 的密码和用户名的步骤。现在在 pgAdmin 4 中,我想将数据库连接到服务器,它要求我输入密码,而我一开始没有输入任何密码。 任何人都知道发生了什么。谢谢!

【问题讨论】:

  • 来自文档:默认情况下,安装 PostgreSQL 时,还会添加一个 postgres 用户。许多人问的第一个问题是,“用户 postgres 的默认密码是什么?”答案很简单……没有默认密码。 PostgreSQL 的默认身份验证模式设置为 ident
  • 谢谢,您能告诉我更多关于 PostgreSQL 的默认身份验证模式的信息,或者我可以使用的任何参考资料吗? - @iLuvLogix
  • 你的操作系统是什么?
  • 操作系统:Windows 10
  • 请看我的回答,如果您遇到任何进一步的问题,请告诉我..

标签: postgresql pgadmin-4 postgresql-11


【解决方案1】:

PostgreSQL 的默认身份验证模式设置为 ident

你可以通过pgAdmin -> Files -> open pgpass.conf访问你的pgpass.conf

这将在窗口底部为您提供pgpass.conf 的路径 (official documentation)。

知道位置后,您可以打开此文件并根据自己的喜好对其进行编辑。

如果这不起作用,您可以:

  • 找到你的pg_hba.conf,通常位于C:\Program Files\PostgreSQL\9.1\data\pg_hba.conf

  • 如有必要,设置它的权限,以便您可以修改它。您的用户帐户可能无法执行此操作,除非您使用属性对话框中的安全选项卡通过管理员覆盖授予自己该权限。

  • 或者,在开始菜单中找到notepadnotepad++,右键单击,选择“以管理员身份运行”,然后使用File->Open 以这种方式打开pg_hba.conf。 p>

  • 编辑它以将主机“127.0.0.1/32”上用户“postgres”的“主机”行设置为“信任”。如果该行不存在,您可以添加该行;只需在任何其他行之前插入host all postgres 127.0.0.1/32 trust。 (可以忽略 cmets,以 # 开头的行)。

  • 从服务控制面板重启 PostgreSQL 服务 (start->run->services.msc)

  • 使用 psql 或 pgAdmin4 或任何您喜欢的方式进行连接

  • 运行ALTER USER postgres PASSWORD 'fooBarEatsBarFoodBareFoot'

  • 删除您添加到 pg_hba.conf 的行或将其改回

  • 重新启动 PostgreSQL 以使更改生效。

这是pg_hba.conf 文件的示例(METHOD 已设置为trust):

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust

# IPv6 local connections:
host    all             all             ::1/128                 trust

注意:请记住在更改密码后将 METHOD 改回md5here 列出的其他身份验证方法(如上所述)。

【讨论】:

  • 我将所有方法设置为“信任”,因为每当我创建一个新数据库时,服务器将无法连接。您对增加安全性有什么建议吗?
  • 无论如何,我一定会赞成并接受你的回答,这将帮助任何有同样问题的人。
  • @Michelley 到目前为止你做了什么?您是否将host all postgres 127.0.0.1/32 trust 设置为您的pg_hba.conf
  • 是的,我已将所有设置为信任。供您参考,这就是我的 pg_hba 的样子:'host all all 127.0.0.1/32 trust'
  • 我在 Linux Mint(Ubuntu 18.04 基础)上遇到了同样的问题。我已按照这些说明进行操作,但没有任何改变。如果我尝试使用 postgres 和我设置的密码创建新服务器,仍然会出现相同的错误。有什么想法吗?
【解决方案2】:

对于 Windows 版本 - 我也遇到了这个讨厌的错误,因为 pgAdmin 用于我的 Windows x64 版本 9.2 安装。它让我的生产陷入瘫痪。

在文件夹 C:\Program Files\PostgreSQL\9.2\data 或 C:\Program Files (x86)\PostgreSQL\9.x\data 中,您会找到 pg_hba.conf 文本文件。

找到以下行:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

并将 METHOD md5 更改为“信任”,如下所示:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust

从 Windows>运行类型“services.msc”并 enter 找到正确的 PostgreSQL 实例并重新启动它。

您的数据库安全性现已完全开放!在将所有相关用户的用户密码到期时间更改为 2099 年之后,请注意将其返回到 md5 的警告。

【讨论】:

【解决方案3】:

更改默认使用密码 ALTER USER postgres WITH PASSWORD 'new_password';

【讨论】:

  • 当我们第一次安装时,我们需要为默认postgres用户设置密码
  • 对于我们添加的每个用户,我们都需要设置密码。
【解决方案4】:

注意:CREATE USER 与 CREATE ROLE 相同,只是它暗示 LOGIN。

$ psql postgres
postgres=# create user postgres with superuser password 'postgres';

【讨论】:

    【解决方案5】:

    修改主密码成功后

    如果您在执行主密码重置步骤后仍遇到相同的错误 打开命令提示符并执行

        psql -U postgres
    

    它会要求你输入密码,输入你现在设置的新密码并行打开 SQL shell(psql) 并用新密码重试

    【讨论】:

      【解决方案6】:

      选项 1:如果您使用 trust

      最好在 pg_hba.conf 中仅将 postgres 更改为 trust,然后使用 postgres 超级用户访问您的数据库并使用 postgres 超级用户的权限添加其他用户和密码,然后将所有其他 peer 更改为 @987654326 @。

      步骤:在pg_hba.conf中修改

      • local postgrestrust
      • 请勿将local all 更改为trust
      • 而是将 local allpeer 更改为 md5 - 这意味着正确的密码足以登录。

      the second answer of 'Getting error: Peer authentication failed for user "postgres", when trying to get pgsql working with rails' 上查看此解决方案的详细信息。


      选项 2:使用 md5,不需要 trust(推荐)

      这种方式更简单,因为您只需更改 pg_hba.conf 一次:

      1. 将任何本地用户从peer 更改为md5,通常:
      • local postgrespeer 更改为 md5
      • local allpeer 更改为 md5
      1. 仅使用 Linux pw 的强大功能添加一个 postgres pw:

         sudo su postgres
         psql (or psql -p <port> if you have more than one PostgreSQL)
         \password
         \q
        

      the accepted answer and the comments of "Getting error: Peer authentication failed for user "postgres", when trying to get pgsql working with rails"

      【讨论】:

      • 选项 2:使用 \password 设置密码为我做了。谢谢!
      【解决方案7】:

      如果在安装时输入了密码,请尝试使用psql -U postgres,这是您必须使用的命令。谢谢你:)

      【讨论】:

      • 救了我,但知道为什么它不像普通用户 ID 那样工作,通过场景
      【解决方案8】:

      我知道这是一个老问题,但我遇到了同样的问题,例如在使用 Postgresql 11 安装期间没有设置 Postgres 密码的对话框。

      我没有执行其他答案中建议的所有文件操作,而是删除了 Postgresql 11 并安装了 Postgresql 12,在安装过程中提示我设置密码。

      【讨论】:

      • 有人问我密码,我在安装 Postgres 12 时也设置了密码,但现在密码不被接受,我收到此错误psql: error: could not connect to server: FATAL: password authentication failed for user "USER"我输入了正确的密码
      • 我遇到了和 Ananta K Roy 一样的问题
      【解决方案9】:

      目前解决这个案子让我头疼。一位朋友帮助我,我决定在这里发布我的解决方案。

      1. 在任何文本编辑器中打开 pg_hba.conf(您可以在 postgres 安装文件夹 > data 中找到此文件);
      2. 将所有方法字段更改为信任(意味着您不需要 postgre 的密码)
      3. 在您的控制台中运行以下命令:“alter user postgres with password '[my password]';” | psql -U postgres (意思是为用户更改[我的密码]的一些用户密码作为参数-U postgres);
      4. 等等 (别忘了将信任方法改回最适合您的方法)

      我希望有一天这对某人有所帮助。

      【讨论】:

        【解决方案10】:

        如果您使用 pgAdmin4 并在更新密码时遇到错误,请按照以下步骤操作:

        1] 打开文件“pg_hba.conf”并找到“IPv4 本地连接”

        2]查看“方法”栏下的值,必须设置为“md5”,因为您在安装时选择了它。

        3] 将“md5”值设为空白并保存文件。重启 pgAdmin4 应用程序。

        4] 现在再次将值设置回“md5”并在 pgAdmin 应用程序中输入您的密码。

        你应该能够成功地做到这一点。

        【讨论】:

        • 不幸的是它没有用。我无法再次在 pgAdmin 应用程序中输入 mypassword
        【解决方案11】:
        • 登录到 PgAdmin4

        前往

        • 对象 > 创建 > 登录/组角色
        • 创建在 psql 终端中命名的“用户名”
        • 创建密码
        • 给它所有的权利
        • 保存
        • 立即在 psql 终端中尝试输入密码。

        它对我有用。

        希望这对你有用。

        【讨论】:

          【解决方案12】:

          您可以首次使用“超级用户”密码。

          之后,您可以使用 Object > Create > Login/Group Role 更改“postgres”用户的密码。

          【讨论】:

            【解决方案13】:

            我通过在本地 postgres 将 peer 更改为信任文件“pg_hba.conf”解决了这个问题,然后我使用以下命令重新启动了 postgres 服务:

            sudo service postgresql restart
            

            就是这样。

            【讨论】:

              【解决方案14】:

              我已经尝试了上述所有解决方案,相信我北向工作!我已经使用以下命令解决了这个问题

              1. psql -U 默认

              2. \密码

              输入新密码:

              再次输入:

              我的用户名是:默认

              这对我来说非常有效。

              【讨论】:

                【解决方案15】:

                Linux 用户试试这个

                //CHECK POSTGRES IS WORKING OR NOT
                sudo systemctl status postgresql
                
                //THIS WILL ACCEPT PORTS
                sudo pg_isready
                sudo su postgres
                
                //NAVIGATE TO SQL TERMINAL / BASH
                psql
                
                //CREATE A NEW USER WITH PASSWORD
                CREATE USER shayon WITH PASSWORD 'shayon';
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2020-08-13
                  • 2023-04-05
                  • 2021-08-06
                  • 2020-10-13
                  • 1970-01-01
                  • 1970-01-01
                  • 2021-11-21
                  相关资源
                  最近更新 更多