我已经安装了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"
答案 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):
在/etc/postgresql/9.x/main
sudo vi pg_hba.conf
2。编辑下面的行
local all postgres peer
到
local all postgres trust
重新启动服务器
sudo service postgresql restart
答案 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
答案 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
安装的那个
/Library/PostgreSQL/13
。然后试试
psql postgres
它应该可以工作。
答案 18 :(得分:0)
我也遇到过类似的问题。 访问任何数据库时,更新密码后都出现以下提示 PGAdmin中的“用户“ postgres”的密码验证失败”
解决方案:
希望它将解决您的问题
答案 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)
我也观察到“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)
我希望有一天这对某人有所帮助。
答案 26 :(得分:-2)
我希望这会在短时间内帮助您。 您可以使用bellow命令更改postgres sql的密码。
sudo -u postgres psql
然后您可以更新密码
更改用户postgres密码“ YOUR_NEW_PASSWORD”;