我已经安装了 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"
如果我没记错的话,默认情况下,用户 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 超级用户的有效密码,它也会很高兴。 :-)
工作人员的反应是正确的,但如果你想进一步自动化可以这样做:
$ sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"
完毕!您保存了用户 = postgres 和密码 = postgres。
如果您没有用户 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 用户添加信息
sudo service postgresql restart
sudo systemctl restart postgresql.service
编辑 pg_hba.conf 文件,对于 /etc/postgresql/9.3/main/pg_hba.conf
上的 Debian 和 /var/lib/pgsql/9.4/data/pg_hba.conf
上的 Red Hat/IBM 衍生产品
将所有身份验证方法更改为信任。
更改 postgres 用户的 Linux 密码。
重新启动服务器。
使用 psql -h localhost -U postgres 登录并使用刚刚设置的 Unix 密码。
如果它有效,您应该使用 md5 或 ident 方法将 pg_hba.conf 文件重新设置为值并重新启动。
sudo su - postgres
,下一个为 postgres db 设置/修复/取消设置密码(如果需要,在 shell 中),然后恢复到安全的 md5
或 ident
方法和再次重新启动,使价值观保持不变。顺便说一句,在 Cent/RedHat 9.4 上,该文件位于:/var/lib/pgsql/9.4/data/pg_hba.conf
对于那些第一次使用它并且不知道密码是什么信息的人,他们可以按照以下步骤操作(假设您使用的是 ubuntu):
打开 /etc/postgresql/9.x/main 中的文件 pg_hba.conf sudo vi pg_hba.conf 2.编辑以下行 local all postgres peer to local all postgres trust 重新启动服务器 sudo service postgresql restart 最后您可以无需登录如图所示的密码
W10 : Warning: Changing a readonly File
也无法打开文件进行写入
sudo
,我的错。
当您安装 postgresql 时,没有为用户 postgres 设置密码,您必须使用以下命令在 Unix 上显式设置它:
sudo passwd postgres
它会询问您的 sudo 密码,然后提示您输入新的 postgres 用户密码。 Source
尽量不要使用 -W 参数并将密码留空。有时用户是使用无密码创建的。
如果这不起作用,请重置密码。有几种方法可以做到这一点,但这适用于许多系统:
$ 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
输入此命令后会提示设置密码,只需设置密码然后尝试即可。
如果您尝试以 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
。不要忘记初始化并启动数据库服务器。
古老的线程,但我在 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,所以不知道为什么会这样。希望这可以节省您一些时间。
我在 Windows 10 上遇到了同样的错误。就我而言,当我设置 Postgres 时,我的 username 默认为 postgres。但是当我运行命令 psql
时,它显示我的 username 为 jitender 这是我的机器名,我不知道为什么设置了这个用户名.
无论如何要解决它,我做了以下步骤:运行命令 psql --help
在输出中,寻找连接选项,在这里你会看到你的默认用户,在我的例子中它是 jitender。
您还将获得设置另一个用户名的命令,它应该是 psql --username postgres。您可以根据需要设置用户名,仅此而已,问题就解决了。
如果您看到错误
FATAL: password authentication failed for user "postgres"
如果您确定您的密码正确,请检查密码是否包含任何特殊字符,尤其是“%”或斜杠。在我的例子中,它是密码字符串中的“%”。删除此符号后,一切正常。
以下是我尝试登录的一些组合:
# 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
时光飞逝!
在版本 12 上,我必须在这里使用“密码”而不是“身份”:
local all postgres password
不使用 -h 选项进行连接。
首先是密码箱
ALTER USER postgres with encrypted password 'postgres';
然后服务重启:
sudo systemctl restart postgresql.service
结尾。
按着这些次序 :
sudo -u postgres -i psql \密码 postgres
之后,输入您的密码两次。
然后在 pgAdmin4 中使用该密码。
我只是想补充一点,您还应该检查您的密码是否已过期。
有关详细信息,请参阅 Postgres password authentication fails。
就我而言,Ubuntu 20.04 Postgresql 12 使用了错误的端口。
我检查了 /etc/postgresql/12/main/postgresql.conf
,发现它是 5433
而不是 5432
。
答案是@diego
我想添加一些关于我如何修复错误的解释,希望对其他人有所帮助:ERROR: password authentication failed for user "postgres"
在窗口
确保你下载了 Postgres 软件,安装它,创建并确认密码,并确保它没有复杂的符号和字符。
打开窗口,单击 SQL Shell (PSQL) 并访问它并创建数据库
创建连接字符串,如 postgres://postgres:your_password@localhost:port/your_database
在 WSL 上
安装成功后
// 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
我有一个类似的问题。 Ubuntu让我使用超级用户的任何密码登录控制台。除非我在 psql 行命令中使用 -h localhost 连接。
我也观察到“localhost:8080/MyJSPSiteLogIn” - 显示:致命:用户“用户”的身份验证错误。
pg_hba.conf 没问题。
我注意到有两个版本的 postgres 在同一个服务中运行。
已解决 - 卸载 inutil 版本。
我遇到过类似的问题。在访问任何数据库时,在 PGAdmin 中更新密码“用户“postgres”的密码验证失败”后,我得到以下提示
解决方案:
关闭 postgres 服务器 重新运行 pgadmin pgadmin 将要求输入密码。请输入提及用户的当前密码
希望它能解决你的问题
https://i.stack.imgur.com/FsLCZ.png
这是由于缓存而发生的。
当你运行 php artisan config:cache 时,它会缓存配置文件。每当事情发生变化时,您都需要继续运行它以更新缓存文件。但是,如果您从不运行该命令,它将不会缓存。
这对于生产来说是可以的,因为配置不会经常更改。但是在登台或开发期间,您可以通过清除缓存来禁用缓存并且不要运行缓存命令
因此,只需运行 php artisan config:clear,并且不要运行之前的命令以避免缓存。
检查原帖
Password authentication failed error on running laravel migration
就我而言,它的密码超过 100 个字符。将其设置为较小的字符密码有效。
实际上,我想知道某处是否有对此的参考。
请记住,如果您安装了两个版本的 Postgres,则需要卸载其中一个,在我的情况下,在 MacOS 上,我通过 .dmg
安装了一个版本,通过 brew
安装了一个版本。
对我有用的是使用以下步骤卸载通过 .dmg
安装的那个
转到/库/PostgreSQL/13。打开卸载-postgres.app。
然后尝试
psql postgres
它应该工作。
给出的答案几乎是正确的,只是缺少一些我将在我的解决方案中处理的指针
首先确保您的用户具有 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;
就我而言,它是如此简单!我在应用程序 JAVA Spring 中出错,因为我需要记住数据库超级用户,它在安装过程 PostgreSQL 期间显示,在我的情况下,数据源将是 postgres。所以,我正确地添加了名称并且它有效!
在任何文本编辑器中打开 pg_hba.conf(您可以在 postgres 安装文件夹中找到此文件);将所有方法字段更改为信任(这意味着您不需要 postgre 的密码);在你的控制台中运行这个命令:“alter user postgres with password '[my password]';” | psql -U postgres (意味着将用户的 [我的密码] 的一些用户密码作为参数 -U postgres 更改)等等(不要忘记将信任的方法改回最适合您的方法)
我希望有一天这对某人有所帮助。
我希望这对你有帮助。您可以使用以下命令更改 postgres sql 的密码。
命令
sudo -u postgres psql
接下来您可以更新密码
命令
更改用户 postgres 密码“YOUR_NEW_PASSWORD”;
不定期副业成功案例分享
ident
才能使第一步工作。如果您已经将其设置为 md5 或其他内容,您将无法自动登录。