我忘记了在postgres安装过程中输入的密码

hil*_*arl 185 postgresql forgot-password postgresql-9.1

我忘了或错误输入(在安装过程中)密码给Postgres的默认用户.我似乎无法运行它,我收到以下错误:

psql: FATAL:  password authentication failed for user "hisham"
hisham-agil: hisham$ psql 
Run Code Online (Sandbox Code Playgroud)

是否有重置密码或如何创建具有超级用户权限的新用户?

我是Postgres的新手,刚刚第一次安装它.我正在尝试使用它与Rails,我正在运行Mac OS X Lion.

Ars*_*en7 335

  1. 找到文件pg_hba.conf- 它可能位于,例如在/etc/postgresql-9.1/pg_hba.conf.

    cd /etc/postgresql-9.1/

  2. 把它备份

    cp pg_hba.conf pg_hba.conf-backup

  3. 放置以下行(作为第一个未注释的行,或作为唯一的行):

    sudo /etc/init.d/postgresql restart

  4. 重启你的PostgreSQL服务器(例如,在Linux上:)

    local all all trust

    如果服务(守护程序)未在日志文件中开始报告:

    此版本不支持本地连接

    你应该改变

    host all all 127.0.0.1/32 trust

    postgres

  5. 你现在可以像任何用户一样连接.以超级用户身份连接pgsql(注意,超级用户名在您的安装中可能有所不同.psql -U postgres例如,在某些系统中会调用它.)

    psql -h 127.0.0.1 -U postgres

    要么

    ALTER USER my_user_name with password 'my_secure_password';

    (请注意,使用第一个命令,您不会始终与本地主机连接)

  6. 重设密码

    pg_hba.conf

  7. 恢复旧的,cp pg_hba.conf-backup pg_hba.conf因为留下来是非常危险的

    pg_hba.conf

  8. 重启服务器,以便与保险箱一起运行 sudo /etc/init.d/postgresql restart

    pg_hba.conf

进一步阅读 pg_hba文件:http://www.postgresql.org/docs/9.1/static/auth-pg-hba-conf.html

  • 然后启动`psql`?我仍然被提示输入密码,我不知道 (9认同)
  • 如果您遇到此错误,请继续滚动到@SaiyanGirl的答案.只需将现有条目的METHOD列修改为"信任",然后在完成后将其更改回来 (6认同)
  • 这个答案对我不起作用,在我做完第3步后,服务不会启动,我不知道,也许是操作系统(W8),它只是不会. (4认同)
  • Windows的任何人? (3认同)
  • 请记住pg_hba.conf中的条目顺序很重要.如果您在文件的末尾添加"local all all tr​​ust",它将无法正常工作,因为之前的记录将首先匹配.所以把它放在文件的顶部,以达到你的期望. (2认同)
  • 您应该注释所有其他行或将所有`md5`替换为`trust`。 (2认同)

Sae*_*aeX 91

从命令行连接到postgres时,不要忘记添加-h localhost为命令行参数.如果没有,postgres将尝试使用PEER身份验证模式进行连接.

下面显示了密码的重置,使用PEER身份验证的登录失败以及使用TCP连接成功登录.

# sudo -u postgres psql
could not change directory to "/root"
psql (9.1.11)
Type "help" for help.

postgres=# \password
Enter new password:
Enter it again:
postgres=# \q
Run Code Online (Sandbox Code Playgroud)

失败:

# psql -U postgres -W
Password for user postgres:
psql: FATAL:  Peer authentication failed for user "postgres"
Run Code Online (Sandbox Code Playgroud)

使用-h localhost:

# psql -U postgres -W  -h localhost
Password for user postgres:
psql (9.1.11)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

postgres=#
Run Code Online (Sandbox Code Playgroud)

  • 感谢有关"-h"选项的提示,帮助了我. (7认同)

Sai*_*irl 70

pg_hba.conf(C:\Program Files\PostgreSQL\9.3\data)文件发生了变化,因为这些答案中给出.在Windows中,对我来说有用的是打开文件并将METHODfrom 更改md5trust:

# 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
Run Code Online (Sandbox Code Playgroud)

然后,使用pgAdmin III,我使用无密码登录并postgres'通过转到更改用户密码File -> Change Password

  • 这不起作用,因为 PgAdmin 仍然要求输入当前密码...我重置为“信任”并重新启动 PgAdmin。如果不输入当前密码,仍然无法重置... (3认同)
  • 将方法更改为“信任”后,您可以按照[此](https://www.postgresql.org/docs/8.0/static/sql-alteruser.html)并在cmd中更改密码 (2认同)

小智 28

对于Windows(对我有帮助的):
\n

这是我参考的文档:How can I Reset a PostgreSQL password?

\n
    \n
  1. 打开 cmd 并转到C:\\Program Files\\PostgreSQL\\12\\data。\n这通常是正确的路径。您可能将其存储在其他地方。请注意,如果您有不同的 PostgreSQL 版本,则会有不同的数字。那没关系。

    \n
  2. \n
  3. 找到一个pg_hba.conf文件并将其复制到其他地方(这样您将拥有该文件的未修改版本,因此您可以在我们进行一些更改后查看它)

    \n
  4. \n
  5. 打开pg_hba.conf文件(不是备份,而是原始的)

    \n
  6. \n
  7. 找到文件底部附近以 host 开头的多行:

    \n
    host    all             all             127.0.0.1/32            md5\n\nhost    all             all             ::1/128                 md5\n\nhost    replication     all             127.0.0.1/32            md5\n\nhost    replication     all             ::1/128                 md5\n
    Run Code Online (Sandbox Code Playgroud)\n
  8. \n
  9. 将md5替换为trust

    \n
    host    all             all             127.0.0.1/32            trust\n\nhost    all             all             ::1/128                 trust\n\nhost    replication     all             127.0.0.1/32            trust\n\nhost    replication     all             ::1/128                 trust\n
    Run Code Online (Sandbox Code Playgroud)\n
  10. \n
  11. 关闭该文件

    \n
  12. \n
  13. 转到 Windows 上的搜索栏并打开服务应用程序。找到postgres并重新启动它。

    \n

    服务应用程序图片

    \n
  14. \n
  15. 在cmd中写入cd..,然后写入cd bin。你的路径应该是C:\\Program Files\\PostgreSQL\\12\\bin

    \n
  16. \n
  17. 进入:psql -U postgres -h localhost

    \n
  18. \n
  19. 输入:ALTER USER postgres with password \'<your new password>\';确保包含 ; 最后应显示 \n\xe2\x80\x9cALTER ROLE\xe2\x80\x9d 以指示上一行已成功执行

    \n
  20. \n
  21. 打开原来的pg_hba.conf文件并从trust改回md5

    \n
  22. \n
  23. 像以前一样使用服务应用程序重新启动服务器

    \n
  24. \n
\n


Dan*_*iel 12

只需注意,在Linux上你可以简单地运行sudo su - postgres成为postgres用户,并从那里改变使用psql所需的内容.

  • 在运行psql之后您仍然需要密码 (2认同)

Bid*_*jhi 7

为最新的 postgres 版本 (>10) 添加 Windows 用户的答案,

去你的postgres安装位置,搜索pg_hba.conf,你会在..\postgres\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
#..
Run Code Online (Sandbox Code Playgroud)

将方法从 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
# ...
Run Code Online (Sandbox Code Playgroud)

现在转到您的 SQL Shell(PSQL) 并将所有内容留空,

Server [localhost]:
Database [postgres]:
Port [8000]:
Username [postgres]: 
Run Code Online (Sandbox Code Playgroud)

这次不会要求输入密码,你就登录了,

现在运行这条线, ALTER USER yourusername WITH SUPERUSER

现在你可以用 \q 离开 shell

再次转到文件 pg_hba.conf 并再次将 METHOD 从 trust 更改为 md5,并保存它。

现在使用您的新用户和密码登录,您可以检查 \du 的属性。


Ray*_*ter 5

  1. 编辑文件/etc/postgresql/<version>/main/pg_hba.conf并找到以下行:

    local   all             postgres                                md5
    
    Run Code Online (Sandbox Code Playgroud)
  2. 编辑线和变化md5在年底trust和保存文件

  3. 重新加载PostgreSQL服务

    $ sudo service postgresql reload
    
    Run Code Online (Sandbox Code Playgroud)
  4. 这将加载配置文件。现在,您可以postgres通过登录psql外壳来修改用户

    $ psql -U postgres
    
    Run Code Online (Sandbox Code Playgroud)
  5. 更新postgres用户密码

    alter user postgres with password 'secure-passwd-here';
    
    Run Code Online (Sandbox Code Playgroud)
  6. 编辑文件,/etc/postgresql/<version>/main/pg_hba.conf然后更改trustmd5并保存文件

  7. 重新加载PostgreSQL服务

    $ sudo service postgresql reload
    
    Run Code Online (Sandbox Code Playgroud)
  8. 验证密码更改是否有效

    $ psql -U postgres -W
    
    Run Code Online (Sandbox Code Playgroud)

  • 提供Windows解决方案就这么难吗?并不是每个人都使用 sudo 来使用 Linux。我在 Windows 上该怎么做? (2认同)

Nat*_*les 5

我在Windows 10上遇到了这个问题,而我的问题是我正在运行psql,并且默认情况下尝试使用Windows用户名(“ Nathan”)登录,但是没有该名称的PostgreSQL用户,并没有告诉我。

因此解决方案是运行,psql -U postgres而不只是运行psql,然后我在安装时输入的密码起作用。