我认为我无法重新锁定我的 postgres psql 账户

我认为我无法重新锁定我的 postgres psql 账户

当我在 Linux 上设置 postgresql 时,我按照一个教程操作,我认为该教程让我更改了 postgres 帐户密码,但我不知道还有更好的方法。请原谅我的无知。

当我输入“psql postgres”时,它会要求输入密码,而且只有一个密码有效。我尝试按照之前的答案,使用“\password postgres”执行“sudo passwd --lock postgres”和“sudo -u postgres psql postgres”,然后设置一个新密码(但不起作用)。

我害怕编辑 /etc/passwd 并将 * 代替密码,因为该评论的赞成票很少,而且我不知道它实际上会产生什么作用。

我尝试过的所有方法(甚至在 pg_hba.conf 中将 md5 更改为信任),在输入“sudo /etc/init.d/postgresql restart”后,psql postgres 仍然需要密码,并且只接受一个有效的密码。其他任何方法都会返回“psql:FATAL:密码验证失败”。

我能做些什么?

答案1

身份验证方法“对等”

如果你的身份验证方法peer如下

local   all             postgres                                peer

和/或

local   all             all                                     peer

然后pg_hba.conf以 Linux 用户身份连接postgres到数据库。

sudo -u postgres psql

即使设置了密码,您也不需要密码。

笔记: psql -U postgres postgres以不同的 Linux 用户身份运行,postgres在这种情况下不起作用,并且会失败psql: FATAL: Peer authentication failed for user "postgres"

认证方法“md5”

如果您的身份验证方法是md5,那么您将需要正确的密码才能连接。

重设密码

  1. 注释所有以“local”开头的现有行pg_hba.conf并添加行

    local    all             postgres                               trust
    
  2. 重启 postgres

    service postgresql restart
    
  3. 连接到数据库

    # as any linux user
    psql -U postgres
    # or as user postgres
    sudo -u postgres psql
    
  4. 更改密码

    ALTER USER postgres WITH PASSWORD 'password';
    
  5. 出口

    \q
    
  6. 恢复更改pg_hba.conf,Debian 9.8.0 上的 postgresql 9.6 的默认设置是

    # Database administrative login by Unix domain socket
    local   all             postgres                                peer
    
    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    
    # "local" is for Unix domain socket connections only
    local   all             all                                     peer
    # IPv4 local connections:
    host    all             all             127.0.0.1/32            md5
    # IPv6 local connections:
    host    all             all             ::1/128                 md5
    # Allow replication connections from localhost, by a user with the
    # replication privilege.
    #local   replication     postgres                                peer
    #host    replication     postgres        127.0.0.1/32            md5
    #host    replication     postgres        ::1/128                 md5
    
  7. 重启 postgres

    service postgresql restart
    

笔记2: 如果您想要更改记录的密码host,请使用方法执行与上述相同的操作trust并使用主机名选项进行连接psql -U postgres -h localhost postgres

相关内容