You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法用postgres用户登录phpPgAdmin,如何恢复密码并获取访问权限?

恢复PostgreSQL的postgres密码并访问phpPgAdmin

问题背景

在Ubuntu笔记本上安装phpPgAdmin(7.12.1+dfsg-1)后,修改了/etc/phppgadmin/config.inc.php中的$conf['extra_login_security'] = false;,重启postgresql和apache2服务后,尝试用默认的postgres用户名/密码登录phpPgAdmin失败。随后用passwd postgres修改系统用户密码,依然无法登录。查看/etc/passwd确认postgres系统用户存在,且尝试直接用psql登录时提示“role 'root' does not exist”,当前系统用户为hoster。

解决步骤

  1. 切换到postgres系统用户并进入数据库控制台
    PostgreSQL默认仅允许postgres系统用户直接访问数据库控制台,执行以下命令:

    sudo su - postgres
    psql
    
  2. 修改PostgreSQL的postgres角色密码
    在psql控制台中执行密码修改命令(替换你的新密码为自定义密码):

    ALTER USER postgres WITH PASSWORD '你的新密码';
    

    执行完成后退出控制台:

    \q
    exit
    
  3. 调整PostgreSQL认证配置(关键)
    Ubuntu下PostgreSQL默认使用peer认证方式(依赖系统用户匹配),需要改为密码认证才能通过phpPgAdmin登录:

    • 找到pg_hba.conf配置文件(替换<版本号>为你的PostgreSQL实际版本,比如14):
      sudo nano /etc/postgresql/<版本号>/main/pg_hba.conf
      
    • 找到针对postgres用户的本地认证行,将peer改为md5:
      # 修改前
      local   all             postgres                                peer
      # 修改后
      local   all             postgres                                md5
      
    • 保存文件并退出编辑器(nano中按Ctrl+O保存,Ctrl+X退出)
  4. 重启PostgreSQL服务

    sudo systemctl restart postgresql
    
  5. 测试phpPgAdmin登录
    访问http://localhost/phppgadmin/,使用postgres用户名和刚才设置的数据库密码即可登录。

关键说明

  • 之前修改passwd postgres是修改系统用户postgres的密码,而phpPgAdmin登录验证的是PostgreSQL数据库角色postgres的密码,二者完全独立。
  • 直接用root用户执行psql失败,是因为PostgreSQL默认没有创建root对应的数据库角色,必须通过postgres系统用户中转访问。

内容的提问来源于stack exchange,提问作者Petro Gromovo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 19:18:38