问题描述
我已经安装了PostgreSQL 8.4,Postgres客户端和Pgadmin3。对于控制台客户端和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"
最佳答案
如果我没记错的话,默认情况下,用户postgres
在Ubuntu上没有设置数据库密码。这意味着您只能使用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 程序内,可以为数据库用户postgres
设置密码:
ALTER USER postgres PASSWORD 'newPassword';
您可以通过键入Ctrl
D
或使用命令\q
离开psql
Shell。
现在您应该能够为pgAdmin提供一个数据库超级用户的有效密码,这也将很高兴。 🙂
次佳答案
工作人员的回答是正确的,但是如果您想进一步自动化,可以这样做:
$ sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"
做完了!您保存了用户= postgres和密码= postgres。
如果您没有User postgres ubuntu的密码,请执行以下操作:
$ sudo passwd postgres
第三种答案
令人沮丧的是,以上大多数答案都是正确的,但是它们没有提及您必须重新启动数据库服务才能使pg_hba.conf文件中的更改生效。
因此,如果您如上所述进行更改:
local all postgres ident
然后以root身份重新启动(在centos上类似service service postgresql-9.2 restart),现在您应该能够以用户postgres的身份访问数据库
$psql
psql (9.2.4)
Type "help" for help.
postgres=#
希望这可以为新的postgres用户添加信息
第四种答案
编辑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文件re-set设置为默认值。
第五种答案
对于那些第一次使用它并且不知道密码是什么的人,可以按照以下步骤操作(假设您使用的是ubuntu):
-
在
/etc/postgresql/9.x/main
中打开文件pg_hba.confsudo vi pg_hba.conf
2.编辑以下行
local all postgres peer
至
local all postgres trust
-
重新启动服务器
sudo service postgresql restart
-
最后,您无需密码即可登录,如图所示
第六种答案
如果您尝试以postgres用户身份登录postgres shell,则可以使用以下命令。
切换到postgres用户
# su - postgres
登录到psql
# psql
希望能有所帮助
第七种答案
尝试不使用-W参数,并将密码保留为空白。有时,用no-password创建用户。
如果这样不起作用,请重置密码。有几种方法可以执行此操作,但这在许多系统上都有效:
$ su root
$ su postgres
$ psql -h localhost
> ALTER USER postgres with password 'YourNewPassword';
第八种答案
根据经验:您永远不要为POSTGRES用户设置密码。
如果您需要pgAdmin的超级用户访问权限,请设置另一个超级用户。这样,如果该超级用户的凭据受到破坏,则您始终可以将ssh放入实际的数据库主机中,并使用以下命令手动删除该超级用户
sudo -u postgres -c "DROP ROLE superuser;"
第九种答案
进入postgres shell后,输入以下命令
postgres=# \password postgres
输入此命令后,系统将提示您设置密码,只需设置密码,然后尝试。