如何更改PostgreSQL用户的密码?


当前回答

我使用的是Windows(Windows Server 2019;PostgreSQL 10),因此不支持本地类型连接(pg_hba.conf:本地所有对等)。

以下各项应适用于Windows和Unix系统:

将pg_hba.conf备份到pg_hba.org.conf,例如。仅使用以下命令创建pg_hba.conf:host all all 127.0.0.1/32信任重新启动pg(服务)执行psql-U postgres-h 127.0.0.1输入(在pgctl控制台中)使用密码“SomePass”更改用户postgres;从1还原pg_hba.conf。在上面

其他回答

将用户“postgres”的密码更改为“postgress”:

# ALTER USER postgres WITH ENCRYPTED PASSWORD '<NEW-PASSWORD>';

对于我在Ubuntu 14.04(Trusty Tahr)上的案例,安装了PostgreSQL 10.3:我需要遵循以下步骤

su-postgres将用户切换到postgrespsql以进入PostgreSQL shell\密码,然后输入密码Q退出shell会话然后,通过执行exit并配置pg_hba.conf(我的位于/etc/postgresql/10/main/pg_hba.coff),切换回root,确保您有以下行本地所有postgres md5通过service PostgreSQL Restart重新启动PostgreSQL服务现在切换到postgres用户并再次输入PostgreSQL shell。它将提示您输入密码。

这是谷歌上的第一个结果,当时我正在研究如何重命名用户,所以:

ALTER USER <username> WITH PASSWORD '<new_password>';  -- change password
ALTER USER <old_username> RENAME TO <new_username>;    -- rename user

其他一些有助于用户管理的命令:

CREATE USER <username> PASSWORD '<password>' IN GROUP <group>;
DROP USER <username>;

将用户移动到其他组

ALTER GROUP <old_group> DROP USER <username>;
ALTER GROUP <new_group> ADD USER <username>;

大多数答案基本正确,但你需要注意一些小问题。我遇到的问题是我从未设置过“postgres”的密码,因此我无法登录到允许我更改密码的SQL命令行。以下是我成功使用的步骤(注意,大多数或所有命令都需要sudo或root用户):

编辑要连接的DB集群的数据目录中的pg_hba.conf文件。通过检查systemd命令行可以找到数据目录的文件夹,这很容易通过systemctl状态获得postgresql@VERSION-DB_CLUSTER.用psql版本替换VERSION,用数据库集群的名称替换DB_CLUSTER。如果它是自动创建的。,postgresql@13-main.或者,我的Bash shell在输入postgresql@后提供了自动完成,因此您可以尝试这样做,或者在所有服务列表(systemctl-a)中查找postgresql服务。获得状态输出后,查找CGroup之后的第二个命令行,该命令行应该相当长,并从/usr/lib/postgresql/13/bin/postgres或类似命令行开始(取决于版本、发行版和安装方法)。您正在查找-D之后的目录,例如/var/lib/postgresql/13/main。添加以下行:host all 127.0.0.1/32 trust。这允许所有数据库上的所有用户无条件地通过本地计算机上的IPv4连接到数据库,而无需要求密码。这是一个临时修复,稍后不要忘记再次删除这一行。为了确保安全,我注释了主机all all 127.0.0.1/32 md5(md5可能被scra-sha-256替换),这对相同的登录数据有效,只需要输入密码。重新启动数据库服务:systemctl Restartpostgresql@...再次,使用之前找到的服务。检查服务是否以systemctl状态正确启动postgresql@....与psql连接,非常重要的是,强制psql不要请求密码。根据我的经验,即使服务器不在乎,它也会要求您输入密码,如果您的密码错误,它仍然会拒绝您的登录。这可以通过-w标志完成。完整的命令行如下所示:sudo-u postgres psql-w-h 127.0.0.1-p 5432。这里,postgres是您的用户,您可能已经更改了它。5432是特定于群集的服务器的端口,如果您运行多个群集(例如,我有5434),则端口可能更高。使用\password特殊命令更改密码。记住删除密码忽略解决方法并重新启动服务器以应用配置。

要请求postgres用户的新密码(不在命令中显示):

sudo -u postgres psql -c "\password"