Postgresql:用户“postgres”的密码验证失败

时间:2011-10-08 09:37:44

标签: postgresql ubuntu pgadmin

我已经安装了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"

27 个答案:

答案 0 :(得分:604)

如果我没记错,用户postgres默认情况下在Ubuntu上没有设置 DB 密码。这意味着,您只能使用postgres 操作系统用户帐户登录该帐户。

假设您可以在框中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中,您可以为数据库用户 postgres提供密码:

ALTER USER postgres PASSWORD 'newPassword';

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

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

答案 1 :(得分:124)

员工的反应是正确的,但如果你想进一步自动化可以做到:

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

完成!您保存了User = postgres和password = postgres。

如果您没有用户postgres ubuntu的密码:

$ sudo passwd postgres

答案 2 :(得分:34)

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

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

local all postgres ident

然后重新启动以root身份(在centos上就像服务服务postgresql-9.2重启) 现在您应该能够以用户postgres

的形式访问数据库
$psql
psql (9.2.4)
Type "help" for help.

postgres=# 

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

答案 3 :(得分:15)

编辑pg_hba.conf文件,例如与sudo emacs /etc/postgresql/9.3/main/pg_hba.conf

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

答案 4 :(得分:11)

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

切换到postgres用户

# su - postgres

登录psql

# psql

希望有所帮助

答案 5 :(得分:10)

尝试不使用-W参数并将密码保留为空。有时用户使用无密码创建。

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

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

答案 6 :(得分:9)

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

sudo passwd postgres

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

答案 7 :(得分:8)

对于首次使用它并且不知道密码是什么的用户,可以按照以下步骤操作(假设您使用的是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. 最后,您无需密码即可登录,如图Finally you can login without need of a password as shown in the figure

Ref here for more info

答案 8 :(得分:3)

根据经验法则:您永远不应为POSTGRES USER设置密码

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

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

答案 9 :(得分:3)

如果你看到错误

FATAL:  password authentication failed for user "postgres"

并且您确定您的密码正确,请检查密码是否包含任何特殊字符,尤其是“%”或斜线。 就我而言,它是密码字符串中的“%”。删除此符号后,一切正常。

答案 10 :(得分:2)

一个古老的线程,但是我在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",这具有误导性。解决方法是在端口上使用网址连接字符串(例如postgres://user:password@localhost:5433/mydatabase)。

我的安装程序是Digital Ocean上的Ubuntu 18.04,通过apt-get安装了postgres 9.5,所以不确定为什么会这样。希望这可以节省您一些时间。

答案 11 :(得分:2)

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

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

  • 在输出中,查找连接选项,在这里您将看到您的默认用户,在我的例子中是 jitender。
  • 您还将获得设置另一个用户名的命令,它应该是 psql --username postgres。您可以根据需要设置用户名,这样问题就解决了。

答案 12 :(得分:2)

一旦进入postgres shell,请输入以下命令

postgres=# \password postgres

输入此命令后,系统将提示您设置密码,只需设置密码,然后尝试。

答案 13 :(得分:2)

首先是密码箱

ALTER USER postgres with encrypted password 'postgres';

然后服务重启:

sudo systemctl restart postgresql.service

结束。

答案 14 :(得分:1)

就我而言,Ubuntu 20.04 Postgresql 12 使用了错误的端口。

我检查了 /etc/postgresql/12/main/postgresql.conf 并意识到它是 5433 而不是 5432

答案 15 :(得分:0)

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

答案 16 :(得分:0)

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

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

sudo adduser <username> sudo

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

i) 现在转到 sudo vim /etc/postgresql/<your_postgres_version>/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;

答案 17 :(得分:0)

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

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

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

然后试试

psql postgres

它应该可以工作。

答案 18 :(得分:0)

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


解决方案:

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

希望它将解决您的问题

enter image description here

答案 19 :(得分:0)

就我而言,其密码超过100个字符。将其设置为较小的字符密码即可。

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

答案 20 :(得分:0)

时光飞逝!

在版本12中,我必须在此处使用“密码”而不是“ ident”:

local   all             postgres                                password

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

答案 21 :(得分:0)

这是由于缓存而发生的。

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

这对于生产来说是可以的,因为配置不会经常更改。但是在暂存或开发过程中,您可以通过清除缓存来禁用缓存,而不必运行cache命令

因此,只需运行php artisan config:clear,并且以前不要运行该命令以避免缓存。

查看原始帖子

Password authentication failed error on running laravel migration

答案 22 :(得分:0)

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

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

pg_hba.conf没问题。

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

解决 - 卸载inutil版本。

答案 23 :(得分:0)

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

# 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

答案 24 :(得分:0)

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

有关详细信息,请参阅Postgres password authentication fails

答案 25 :(得分:-1)

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

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

答案 26 :(得分:-2)

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

命令

sudo -u postgres psql

然后您可以更新密码

命令

更改用户postgres密码“ YOUR_NEW_PASSWORD”;