我最近安装了 Postgresql 11,在安装过程中,没有为 Postgres 输入密码和用户名的步骤。现在在 pgAdmin 4 中,我想将数据库连接到服务器,它要求我输入密码,而我一开始没有输入任何密码。任何人都知道发生了什么。谢谢!
15 回答
PostgreSQL 的默认身份验证模式设置为ident。
您可以通过以下方式访问您的 pgpass.confpgAdmin -> Files -> open pgpass.conf
pgpass.conf
这将为您提供窗口底部的路径(官方文档)。
知道位置后,您可以打开此文件并根据自己的喜好对其进行编辑。
如果这不起作用,您可以:
找到您的
pg_hba.conf
, 通常位于C:\Program Files\PostgreSQL\9.1\data\pg_hba.conf
如有必要,设置它的权限,以便您可以修改它。您的用户帐户可能无法执行此操作,直到您使用属性对话框中的安全选项卡通过使用管理员覆盖来授予自己该权限。
或者,在您的开始菜单中找到
notepad
或notepad++
,右键单击,选择“以管理员身份运行”,然后使用该方式File->Open
打开pg_hba.conf
。编辑它以将主机“127.0.0.1/32”上的用户“postgres”的“主机”行设置为“信任”。如果该行不存在,您可以添加该行;
host all postgres 127.0.0.1/32 trust
只需在任何其他行之前插入。(您可以忽略注释,以# 开头的行)。从服务控制面板重新启动 PostgreSQL 服务 (
start->run->services.msc
)使用
psql
pgAdmin4 或任何您喜欢的方式连接跑
ALTER USER postgres PASSWORD 'fooBarEatsBarFoodBareFoot'
删除您添加到 pg_hba.conf 的行或将其改回
再次重新启动 PostgreSQL 以使更改生效。
这是文件的示例(pg_hba.conf
METHOD 已设置为trust):
# TYPE DATABASE USER ADDRESS METHOD
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
注意:请记住在更改密码后将 METHOD 改回或此处md5
列出的其他身份验证方法(如上所述)。
对于 Windows 变体 - 由于 pgAdmin 为我的 Windows x64 版本 9.2 安装,我也遇到了这个讨厌的错误。它让我的生产陷入瘫痪。
在文件夹 C:\Program Files\PostgreSQL\9.2\data 或 C:\Program Files (x86)\PostgreSQL\9 中。x \data,您将找到 pg_hba.conf 文本文件。
找到以下几行:
# TYPE DATABASE USER ADDRESS METHOD
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
并将 METHOD md5 更改为“信任”,如下所示:
# TYPE DATABASE USER ADDRESS METHOD
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
从 Windows>Run 键入“services.msc”并enter找到正确的 PostgreSQL 实例并重新启动它。
您的数据库安全性现在已经完全开放!在将所有相关用户的用户密码到期时间更改为 2099 年之后,请注意将其返回到 md5 的警告。
更改默认使用密码
ALTER USER postgres WITH PASSWORD 'new_password';
注意:CREATE USER 与 CREATE ROLE 相同,只是它暗示 LOGIN。
$ psql postgres
postgres=# create user postgres with superuser password 'postgres';
成功修改主密码后
如果即使按照主密码重置步骤后仍然出现相同的错误打开命令提示符并执行
psql -U postgres
它会询问您的密码,输入您现在设置的新密码并行打开 SQL shell(psql) 并使用新密码重试
尝试psql -U postgres
在安装时使用 if have put password 这是您必须使用的命令。谢谢 :)
选项 1:如果您使用trust
最好只trust
将 pg_hba.conf 中的 postgres 更改为,然后使用 postgres 超级用户访问您的数据库,并使用 postgres 超级用户的权限添加其他用户和密码,然后将所有其他更改peer
为md5
.
步骤:在pg_hba.conf中,更改
local postgres
到trust
- 不要更改
local all
为trust
, - 而是
local all
从更改peer
为md5
- 这意味着正确的密码足以登录。
选项 2:使用md5
,trust
不需要(推荐)
这种方式更容易,因为您只需更改 pg_hba.conf 一次:
- 将任何本地用户从 更改
peer
为md5
,通常:
local postgres
从更改peer
为md5
local all
从更改peer
为md5
仅使用 Linux pw 的强大功能添加 postgres pw:
sudo su postgres psql (or psql -p <port> if you have more than one PostgreSQL) \password \q
对于 Linux 用户试试这个
//CHECK POSTGRES IS WORKING OR NOT
sudo systemctl status postgresql
//THIS WILL ACCEPT PORTS
sudo pg_isready
sudo su postgres
//NAVIGATE TO SQL TERMINAL / BASH
psql
//CREATE A NEW USER WITH PASSWORD
CREATE USER shayon WITH PASSWORD 'shayon';
我知道这是一个老问题,但我遇到了同样的问题,例如在使用 Postgresql 11 安装期间没有设置 Postgres 密码的对话框。
我没有执行其他答案中建议的所有文件操作,而是删除了 Postgresql 11 并安装了 Postgresql 12,在安装过程中提示我设置密码。
我目前在解决这个案子时很头疼。一位朋友帮助我,我决定在这里发布我的解决方案。
- 在任何文本编辑器中打开 pg_hba.conf (您可以在 postgres 安装文件夹 > 数据中找到此文件);
- 将所有方法字段更改为信任(这意味着您不需要 postgre 的密码);
- 在你的控制台中运行这个命令:“alter user postgres with password '[my password]';” | psql -U postgres (意思是为用户更改[我的密码]的一些用户密码作为参数-U postgres);
- 等等(不要忘记将信任的方法改回最适合您的方法)。
我希望有一天这对某人有所帮助。
如果您使用 pgAdmin4 并在更新密码时遇到错误,请按照以下步骤操作:
1]打开文件“pg_hba.conf”并找到“IPv4本地连接”
2]查看“方法”列下的值,它必须设置为“md5”,因为您在安装时选择了它。
3] 将“md5”值设为空白并保存文件。重新启动 pgAdmin4 应用程序。
4] 现在再次将值设置回“md5”并在 pgAdmin 应用程序中输入您的密码。
你应该能够成功地做到这一点。
- 登录到 PgAdmin4
去
- 对象 > 创建 > 登录/组角色
- 创建在 psql 终端中命名的“用户名”
- 创建密码
- 给它所有的权利
- 节省
- 立即在 psql 终端中尝试密码。
它对我有用。
希望这对你有用。
您可以首次使用“超级用户”密码。
之后,您可以使用 Object > Create > Login/Group Role 更改“postgres”用户的密码。
我通过在本地 postgres 将 peer 更改为信任文件“pg_hba.conf”解决了这个问题,然后我使用以下命令重新启动了 postgres 服务:
sudo service postgresql restart
就是这样。