无法用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。
解决步骤
切换到postgres系统用户并进入数据库控制台
PostgreSQL默认仅允许postgres系统用户直接访问数据库控制台,执行以下命令:sudo su - postgres psql修改PostgreSQL的postgres角色密码
在psql控制台中执行密码修改命令(替换你的新密码为自定义密码):ALTER USER postgres WITH PASSWORD '你的新密码';执行完成后退出控制台:
\q exit调整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退出)
- 找到pg_hba.conf配置文件(替换
重启PostgreSQL服务
sudo systemctl restart postgresql测试phpPgAdmin登录
访问http://localhost/phppgadmin/,使用postgres用户名和刚才设置的数据库密码即可登录。
关键说明
- 之前修改
passwd postgres是修改系统用户postgres的密码,而phpPgAdmin登录验证的是PostgreSQL数据库角色postgres的密码,二者完全独立。 - 直接用root用户执行
psql失败,是因为PostgreSQL默认没有创建root对应的数据库角色,必须通过postgres系统用户中转访问。
内容的提问来源于stack exchange,提问作者Petro Gromovo
相关产品推荐
相关产品推荐

