在 Ubuntu 上使用 pgAdmin 进行用户管理
一 管理范围与准备
- 明确两类“用户”:
- pgAdmin 账户:用于登录 pgAdmin Web 界面,进行服务器与数据库的图形化管理。
- PostgreSQL 角色/登录名:用于连接和操作数据库,是实际的对象权限主体。
- 准备与连接:
- 安装并初始化 pgAdmin(桌面模式或服务器模式)。服务器模式可用包 pgadmin4-web 并执行 /usr/pgadmin4/bin/setup-web.sh 完成初始化,随后通过浏览器访问如 http://服务器IP/pgadmin4 登录。
- 在 pgAdmin 左侧添加服务器连接(主机、端口 5432、维护数据库 postgres、用户名如 postgres),确保能正常连接目标 PostgreSQL。
二 在 pgAdmin 中管理 PostgreSQL 角色与登录权限
- 创建登录名(用户)
- 在左侧展开 Servers → 目标服务器 → Login/Group Roles,右键选择 Create → Login/Group Role…,在 General 填写名称,在 Definition 设置密码,在 Privileges 勾选如 Can login / Create databases / Create roles 等,保存。
- 创建角色并授予成员
- 新建一个“角色”(Group Role)用于权限分组,保存后在目标用户 Properties → Membership 中 Add 该角色,实现权限的批量授予与回收。
- 授予数据库与模式权限
- 对具体库:展开 Databases → 目标数据库 → Properties → Permissions,为用户/角色添加如 CONNECT、CREATE 等权限。
- 对模式与表:展开 Schemas → public → Tables,批量设置 SELECT/INSERT/UPDATE/DELETE 等权限(可按表/视图/序列分别设置)。
- 常用授权示例(可在 Query Tool 执行)
- 创建只读用户并授予对某库 public 模式的只读:
CREATE ROLE readonly WITH LOGIN PASSWORD 'ro_pass';
GRANT CONNECT ON DATABASE mydb TO readonly;
GRANT USAGE ON SCHEMA public TO readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO readonly;
- 创建读写用户:
CREATE ROLE app_user WITH LOGIN PASSWORD 'app_pass';
GRANT CONNECT ON DATABASE mydb TO app_user;
GRANT USAGE ON SCHEMA public TO app_user;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO app_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO app_user;
- 回收权限:
REVOKE ALL PRIVILEGES ON DATABASE mydb FROM app_user;
REVOKE ALL PRIVILEGES ON SCHEMA public FROM app_user;
REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM app_user;
- 说明:PostgreSQL 中“用户”与“角色”概念统一,带 LOGIN 属性的角色即可作为登录名使用。
三 在 pgAdmin 中管理多用户账户与访问控制
- 添加服务器连接供团队成员使用
- 每个成员可在其 pgAdmin 中通过 File → Add New Server 添加同一 PostgreSQL 实例的连接,填写名称、主机、端口、数据库与凭据,实现多人共享同一数据库的管理。
- 精细化访问控制建议
- 为不同成员/团队创建不同的 Login/Group Roles,通过 Membership 与对象 Permissions 实施最小权限原则;避免使用 超级用户 进行日常访问。
- 连接安全
- 在服务器属性 Connections 中启用 SSL,并使用强口令与定期轮换策略,降低凭据泄露风险。
四 常见问题与排错
- 新建用户连不上数据库
- 确认 pg_hba.conf 对相应用户/网段使用 md5 或 scram-sha-256 认证,并重启 PostgreSQL;必要时在 postgresql.conf 中设置 listen_addresses 允许远程连接。
- 权限不生效
- 区分 数据库级、模式级、表级 权限;对新建对象需设置 默认权限(ALTER DEFAULT PRIVILEGES),否则后续对象不会自动继承。
- 忘记 pgAdmin 管理员密码
- 服务器模式可通过重运行 /usr/pgadmin4/bin/setup-web.sh 重新设置;桌面模式在首选项或配置文件中按向导重置(注意备份配置)。