如何通过终端psql查询pgadmin所有用户的电子邮箱地址
pgAdmin用户邮箱查询方案
核心误区说明
你此前执行的SQL查询的是PostgreSQL数据库服务的内置系统表pg_shadow,存储的是数据库层面的登录账号信息,和pgAdmin平台自身的用户数据完全无关,查询方向本身有误。同时pg_shadow仅允许数据库超级用户访问,普通登录账号无权限属于正常情况,不需要额外处理该权限问题。
正确查询步骤
pgAdmin的用户信息存储在它专属的元数据库中,根据部署时的配置分为两种查询方式:
情况1:元数据默认存储在SQLite中
绝大多数默认部署的pgAdmin都会采用SQLite存储元数据,操作如下:
- 终端进入SQLite数据库文件所在路径,Linux默认路径为
/var/lib/pgadmin/pgadmin4.db,Windows默认路径为%APPDATA%\pgAdmin\pgadmin4.db - 执行命令打开数据库:
sqlite3 /var/lib/pgadmin/pgadmin4.db
- 执行SQL查询所有用户邮箱:
SELECT id, email, active FROM users ORDER BY email;
情况2:元数据存储在PostgreSQL中
如果你部署时手动配置了pgAdmin将元数据存在指定PostgreSQL库中,操作如下:
- 用你可正常登录psql的账号,连接pgAdmin专属的元数据库(不是业务数据库)
- 执行SQL查询所有用户邮箱:
SELECT id, email, active FROM users ORDER BY email;
内容的提问来源于stack exchange,提问作者Wim den Herder
相关产品推荐
相关产品推荐

