【问题标题】:'password authentication failed for user "postgres"''用户“postgres”的密码验证失败'
【发布时间】:2011-12-03 12:03:34
【问题描述】:

我已安装 PostgreSQL 8.4、Postgres 客户端和 Pgadmin 3。控制台客户端和 Pgadmin 的用户“postgres”的身份验证失败。我输入了用户为“postgres”和密码“postgres”,因为它以前工作过。但现在身份验证失败。我之前做过几次没有这个问题。我该怎么办?会发生什么?

psql -U postgres -h localhost -W
Password for user postgres: 
psql: FATAL:  password authentication failed for user "postgres"
FATAL:  password authentication failed for user "postgres"

【问题讨论】:

标签: postgresql


【解决方案1】:

尽量不要使用 -W 参数并将密码留空。有时创建用户时没有密码。

如果这不起作用,请重置密码。有几种方法可以做到这一点,但这适用于许多系统:

$ su root
$ su postgres
$ psql -h localhost
> ALTER USER postgres with password 'YourNewPassword';

【讨论】:

    【解决方案2】:

    如果我没记错的话,用户 postgres 默认没有在 Ubuntu 上设置 DB 密码。这意味着,您只能使用 postgres OS 用户 帐户登录该帐户。

    假设您在盒子上有root 访问权限,您可以这样做:

    sudo -u postgres psql
    

    如果失败并出现 database "postgres" does not exists 错误,那么您很可能不在 Ubuntu 或 Debian 服务器上 :-) 在这种情况下,只需将 template1 添加到命令中:

    sudo -u postgres psql template1
    

    如果这些命令中的任何一个因错误psql: FATAL: password authentication failed for user "postgres" 而失败,请检查文件/etc/postgresql/8.4/main/pg_hba.conf:必须有这样一行作为第一个非注释行:

    local   all         postgres                          ident
    

    对于较新版本的 PostgreSQL,ident 实际上可能是 peer。也没关系。

    psql shell 中,您可以给DB 用户 postgres 一个密码:

    ALTER USER postgres PASSWORD 'newPassword';
    

    您可以通过键入 CtrlD 或使用命令 \q 离开 psql shell。

    现在您应该能够为 pgAdmin 提供 DB 超级用户的有效密码,它也会很高兴。 :-)

    【讨论】:

    • 请注意,pg_hba.conf 必须将 postgres 用户设置为 ident 才能使第一步工作。如果您已经将其设置为 md5 或其他内容,您将无法自动登录。
    • 非常好的一个。对于其他新用户,不要忘记 ALTER USER 行末尾的分号。
    • @itsols 您说:“非常好。对于其他新用户,不要忘记 ALTER USER 行末尾的分号”...您刚刚结束了四个小时的磨难!我现在感到非常愚蠢和感激。 :-D
    • 我不是很新,我配置了很多次PostgreSQL dbs,但我忘记了分号! ;) 再次 ;)
    • 来自综合手册,postgresql.org/files/documentation/pdf/12/postgresql-12-A4.pdf,第 20.5 节:“如果没有为用户设置密码,则存储的密码为空,并且该用户的密码验证将始终失败。”。因此,由于安装不要求输入密码,因此没有设置密码。这应该在每个教程中说明,因为这是新用户首先要做的事情之一,尝试从一个漂亮的 GUI 进行连接...
    【解决方案3】:

    工作人员的回答是正确的,但是如果你想进一步自动化可以这样做:

    $ sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"

    完成!您保存了用户 = postgres 和密码 = postgres。

    如果您没有用户 postgres ubuntu 的密码,请执行以下操作:

    $ sudo passwd postgres

    【讨论】:

    • 小心您的密码是否包含有趣的字符,例如“!”
    • 由于您在更改用户密码时遇到了麻烦,一个好的做法是创建一个新用户和一个新密码:在 SQL 提示符中,它将是:postgres-# CREATE ROLE your_username WITH LOGIN CREATEDB ENCRYPTED PASSWORD 'your_password';关于使用 postgres 用户的讨论可以在stackoverflow.com/questions/2172569/… 找到
    • 唯一对我有用的解决方案(Kali Linux 2020)
    • 为我工作!!谢谢。请注意,我们需要设置用户名和密码,因为它在 knex.ts 或 js 文件中
    【解决方案4】:

    如果您尝试以 postgres 用户身份登录 postgres shell,则可以使用以下命令。

    切换到 postgres 用户

    # su - postgres
    

    登录到 psql

    # psql
    

    希望有帮助

    【讨论】:

    • su - postgres 在 Ubuntu 16.04 上的 posgresql 9.5 上要求输入密码
    • su - postgres是fedora官方documentation suggests的命令,但我也得到密码提示。为了解决这个问题,我遵循了这个postgres forum email,它使用与此处接受的答案相同的命令:sudo -u postgres psql。不要忘记初始化并启动数据库服务器。
    【解决方案5】:

    这令人沮丧,上面的大多数答案都是正确的,但他们没有提到您必须重新启动数据库服务,然后 pg_hba.conf 文件中的更改才会生效。

    所以,如果您按照上述方式进行更改:

    local all postgres ident
    

    然后 restart 以 root 身份(在 centos 上类似于 service service postgresql-9.2 restart ) 现在您应该能够以用户 postgres 访问数据库了

    $psql
    psql (9.2.4)
    Type "help" for help.
    
    postgres=# 
    

    希望这会为新的 postgres 用户添加信息

    【讨论】:

    • 在 ubuntu 上输入:sudo service postgresql restart
    • 对于 RHEL7 使用 sudo systemctl restart postgresql.service
    • 在 mac 上呢?
    • 对于 mac,请在 SO stackoverflow.com/questions/7975556/… 上查看此问题
    • 谢谢米格尔。我已经手动更改了密码,并且我的 pgAdmin 在我重新启动 postgres 服务器之前没有连接到数据库。
    【解决方案6】:

    编辑 pg_hba.conf 文件,对于 Debian 在/etc/postgresql/9.3/main/pg_hba.conf 和对于 Red Hat/IBM 派生在 /var/lib/pgsql/9.4/data/pg_hba.conf

    • 将所有身份验证方法更改为trust
    • 更改postgres 用户的 Linux 密码。
    • 重启服务器。
    • 使用psql -h localhost -U postgres 登录并使用刚刚设置的Unix 密码。
    • 如果可行,您应该使用md5ident 方法将pg_hba.conf 文件重新设置为值并重新启动。

    【讨论】:

    • 如果你完全卡住了,这是唯一有保证的方法。将所有方法更改为信任,重新启动 db,然后以 root 身份:sudo su - postgres,下一个为 postgres db 设置/修复/取消设置密码(如果需要,在 shell 中),然后恢复到安全的md5ident 方法和再次重新启动,使价值观保持不变。顺便说一句,在 Cent/RedHat 9.4 上,该文件位于:/var/lib/pgsql/9.4/data/pg_hba.conf
    • 感谢 Papak,cent os 上的文件位置很有帮助。
    【解决方案7】:

    我只是想补充一点,您还应该检查您的密码是否已过期。

    详情请见Postgres password authentication fails

    【讨论】:

    • 请添加一些详细信息和该链接提供的内容的摘要,以防将来该链接不再存在。否则,这可能会被标记为低质量/仅链接的答案。
    【解决方案8】:

    以下是我尝试登录的一些组合:

    # login via user foo
    psql -Ufoo -h localhost
    
    sudo -u postgres psql postgres
    
    # user foo login to postgres db
    psql -Ufoo -h localhost -d postgres
    

    【讨论】:

      【解决方案9】:

      根据经验:您永远不应该为 POSTGRES 用户设置密码

      如果您需要 pgAdmin 的超级用户访问权限,请创建另一个超级用户。这样,如果该超级用户的凭据被泄露,您始终可以通过 ssh 进入实际的数据库主机并使用

      手动删除该超级用户
      sudo -u postgres -c "DROP ROLE superuser;"
      

      【讨论】:

      • 这个经验法则的原因是什么?
      • 这样您就永远不会让所有超级用户都受到威胁。
      • 如何为 postgres 设置密码导致所有超级用户都受到威胁?
      • 设置密码不会导致所有超级用户都受到威胁,但不设置密码将保证您永远不会让所有超级用户都受到威胁。原因是:当您不设置密码时,postgres 用户的任何密码登录尝试都将被拒绝,而您仍然可以通过信任自己使用它。
      【解决方案10】:

      我遇到了类似的问题。 Ubuntu让我使用超级用户的任何密码登录控制台。 除非我在 psql 行命令中使用 -h localhost 连接。

      我也观察到“localhost:8080/MyJSPSiteLogIn” - 显示:致命:用户“user”的身份验证错误。

      pg_hba.conf 没问题。

      我注意到有两个版本的 postgres 在同一个服务中运行。

      已解决 - 卸载 inutil 版本。

      【讨论】:

        【解决方案11】:

        我希望这能在短时间内帮助您。 您可以使用以下命令更改 postgres sql 的密码。

        命令

        sudo -u postgres psql

        接下来你可以更新密码了

        命令

        更改用户 postgres 密码“YOUR_NEW_PASSWORD”;

        【讨论】:

        【解决方案12】:

        对于那些第一次使用它并且不知道密码是什么信息的人,他们可以按照以下步骤操作(假设您使用的是 ubuntu):

        1. /etc/postgresql/9.x/main中打开文件pg_hba.conf

           sudo vi pg_hba.conf 
          

          2.编辑下面的行

           local   all             postgres                                peer
          

           local   all             postgres                                trust
          
        2. 重启服务器

            sudo service postgresql restart
          
        3. 终于可以不用密码登录了如图

        Ref here for more info

        【讨论】:

        • 收到错误W10 : Warning: Changing a readonly File 也无法打开文件进行写入
        • 是的,忘了加sudo,我的错。
        【解决方案13】:

        进入 postgres shell 后,输入此命令

        postgres=# \password postgres
        

        输入此命令后会提示你设置密码,设置密码再试试。

        【讨论】:

          【解决方案14】:

          我也遇到过类似的问题。 在访问任何数据库时,我在更新密码后得到以下提示 PGAdmin 中的“用户“postgres”的密码验证失败”


          解决方案:

          1. 关闭 postgres 服务器
          2. 重新运行 pgadmin
          3. pgadmin 将要求输入密码。
          4. 请输入上述用户的当前密码

          希望它能解决您的问题

          【讨论】:

            【解决方案15】:

            当你安装 postgresql 时,没有为用户 postgres 设置密码,你必须使用命令在 Unix 上显式设置它:

            sudo passwd postgres
            

            它会询问您的 sudo 密码,然后提示您输入新的 postgres 用户密码。 Source

            【讨论】:

            • 有趣的是我以前从未见过这个!在我看来,这是迄今为止更改密码的最简单方法。
            【解决方案16】:

            这是由于缓存而发生的。

            当你运行 php artisan config:cache 时,它​​会缓存配置文件。每当事情发生变化时,您都需要继续运行它以更新缓存文件。但是,如果您从不运行该命令,它将不会缓存。

            这对于生产来说是可以的,因为配置不会经常更改。但是在 staging 或 dev 期间,您可以通过清除缓存来禁用缓存并且不要运行缓存命令

            所以,只要运行 php artisan config:clear,不要运行之前的命令以避免缓存。

            查看原帖

            Password authentication failed error on running laravel migration

            【讨论】:

              【解决方案17】:

              时光飞逝!

              在版本 12 上,我必须在这里使用“密码”而不是“身份”:

              local   all             postgres                                password
              

              不使用 -h 选项进行连接。

              【讨论】:

                【解决方案18】:

                在我的例子中,它的密码超过 100 个字符。将其设置为较小的字符密码有效。

                实际上,我想知道某处是否有对此的参考。

                【讨论】:

                  【解决方案19】:

                  古老的线程,但我在 2020 年浪费了半天的时间来处理这个问题,所以这可能会对某人有所帮助:仔细检查您的 postgres 端口(在 Ubuntu 上,它位于 /etc/postgresql/9.5/main/postgresql.conf 中)。 psql 客户端默认使用端口 5432,但在我的情况下,服务器在端口 5433 上运行。解决方案是在 psql 中指定 -p 选项(例如psql --host=localhost --username=user -p 5433 mydatabase)。

                  如果您不使用 --host 参数,psql 将通过套接字连接,这在我的情况下有效,但我的 Golang 应用程序(使用 TCP/IP)没有。不幸的是,错误消息是password authentication failed for user "user",这是一种误导。解决方法是使用带有端口的 url 连接字符串(例如 postgres://user:password@localhost:5433/mydatabase)。

                  我的设置是 Digital Ocean 上的 Ubuntu 18.04,通过 apt-get 安装了 postgres 9.5,所以不知道为什么会发生这种情况。希望这可以为您节省一些时间。

                  【讨论】:

                    【解决方案20】:

                    请记住,如果您安装了两个版本的 Postgres,则需要卸载其中一个,在 MacOS 上,我通过.dmg 安装了一个版本,通过brew 安装了一个版本。

                    对我有用的是使用以下步骤卸载通过.dmg 安装的那个

                    1. 转到/Library/PostgreSQL/13
                    2. 打开uninstall-postgres.app。

                    那就试试

                    psql postgres
                    

                    它应该可以工作。

                    【讨论】:

                      【解决方案21】:

                      给出的答案几乎是正确的,只是缺少一些我将在我的解决方案中处理的指针

                      首先确保您的用户具有 sudo 访问权限,如果没有,您可以使用以下命令将您的用户添加为 sudo 用户:-

                      sudo adduser <username> sudo
                      

                      更改将在用户下次登录时生效。

                      i) 现在转到sudo vim /etc/postgresql/&lt;your_postgres_version&gt;/main/pg_hba.conf 文件并查找以下行:

                      local   all             postgres                                md5 #peer
                      

                      并对此发表评论。在该行下方必须有一个注释行:

                      local   all             postgres                                peer
                      

                      或者对于旧版本,它将是:-

                      local   all         postgres                          ident
                      

                      取消注释该行。

                      ii) 现在使用以下任何命令重新启动 postgres:-

                      sudo /etc/init.d/postgresql restart
                      

                      sudo service postgresql restart
                      

                      iii) 现在您可以使用以下命令简单地登录 postgres:

                      sudo -u postgres psql
                      

                      iv) 进入后,您可以创建任何您想要的操作,在我的情况下,我想创建一个新数据库,您可以使用以下命令执行相同操作:

                      CREATE DATABASE airflow_replica;
                      

                      【讨论】:

                        【解决方案22】:

                        我在 Windows 10 上遇到了同样的错误。就我而言,当我设置 Postgres 时,我的 username 默认为 postgres。 但是当我运行命令psql 时,它显示我的 usernamejitender 这是我的机器名,我不知道为什么设置了这个用户名.

                        无论如何要解决它,我做了以下步骤: 运行命令psql --help

                        • 在输出中,寻找Connection Option,在这里您将看到您的默认用户,在我的例子中是jitender。
                        • 您还将获得设置另一个用户名的命令,该用户名应该是 psql --username postgres。您可以根据需要设置用户名,仅此而已,问题就解决了。

                        【讨论】:

                        • 我发现我必须在每个人的命令上使用 --username=postgres。例如createdb --username=postgres mydb 非常烦人。我尝试执行 psql --username 但这会出现数据库提示并且默认用户名没有更改。
                        【解决方案23】:

                        如果你看到错误

                        FATAL:  password authentication failed for user "postgres"
                        

                        如果您确定密码正确,请检查密码是否包含任何特殊字符,尤其是“%” 或斜杠。 在我的例子中,它是密码字符串中的“%”。删除此符号后,一切正常。

                        【讨论】:

                        • 看起来像“!”在通过 psql 连接时输入密码会导致类似“%”的问题
                        【解决方案24】:

                        在我的例子中,Ubuntu 20.04 Postgresql 12 使用了错误的端口。

                        我检查了/etc/postgresql/12/main/postgresql.conf,发现它是5433 而不是5432

                        【讨论】:

                          【解决方案25】:

                          就我而言,它是如此简单!我在应用程序 JAVA Spring 中出错,因为我需要记住数据库超级用户,它在安装过程 PostgreSQL 期间显示,在我的情况下,数据源将是 postgres。所以,我正确地添加了名称并且它有效!

                          【讨论】:

                            【解决方案26】:

                            首先是密码箱

                            ALTER USER postgres with encrypted password 'postgres';
                            

                            然后服务重启:

                            sudo systemctl restart postgresql.service
                            

                            结束。

                            【讨论】:

                            • 仅供参考 - 在 pg db docker 容器内运行第一个命令 - 改变用户...就足够了。无需重启服务
                            【解决方案27】:
                            1. 在任何文本编辑器中打开 pg_hba.conf(您可以在 postgres 安装文件夹中找到此文件);
                            2. 将所有方法字段更改为信任(意味着您不需要 postgre 的密码)
                            3. 在您的控制台中运行以下命令: “使用密码“[我的密码]”更改用户 postgres;” | psql -U postgres (意思是为用户更改[我的密码]的一些用户密码作为参数-U postgres)
                            4. 等一下 (不要忘记将信任的方法改回最适合您的方法)

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

                            【讨论】:

                              【解决方案28】:

                              答案是@diego

                              我想添加一些关于我如何修复错误的解释,我希望它可以帮助其他人: ERROR: password authentication failed for user "postgres"

                              1. 在窗口中

                              • 确保您下载 Postgres 软件、安装它、创建并确认密码 并确保它不会因为一些符号和字符而变得复杂。

                              • 打开窗口,点击 SQL Shell (PSQL) 并访问它并创建数据库

                              • 创建连接字符串,如 postgres://postgres:your_password@localhost:port/your_database

                              1. 在 WSL 上

                              关注Microsoft documentation

                              安装成功后

                               // Open postgres
                               su postgres
                               
                               // Type psql and hit enter
                               psql
                              
                               // Create a user postgres if not exist or any other user you want 
                               CREATE USER your_user_db WITH PASSWORD 'match_password_with_db_password';
                               
                              
                               // Give user password same as the one you set up for postgres db
                               ALTER USER your_user_db WITH PASSWORD 'match_password_with_db_password';
                              
                               // Restart the server
                               sudo service postgresql restart
                              

                              【讨论】:

                                【解决方案29】:

                                按照以下步骤操作:

                                1. sudo -u postgres -i
                                2. psql
                                3. \密码postgres

                                然后,输入您的密码两次。

                                然后在 pgAdmin4 中使用该密码。

                                【讨论】:

                                  猜你喜欢
                                  • 1970-01-01
                                  • 2015-11-23
                                  • 2020-12-09
                                  • 2020-09-21
                                  • 2023-04-05
                                  • 1970-01-01
                                  • 2020-10-13
                                  相关资源
                                  最近更新 更多