Ubuntu 中 pgAdmin 用户管理操作指南
一 概念与准备
- 明确对象:区分 Linux 系统用户、PostgreSQL 角色/用户、pgAdmin 登录账户。pgAdmin 是管理 PostgreSQL 的图形工具,真正决定数据库权限的是 PostgreSQL 的角色/用户与 pg_hba.conf 认证配置。
- 准备环境:确保已安装 PostgreSQL 与 pgAdmin4。桌面版可直接 apt 安装;服务器版常用 WEB 模式,执行 sudo /usr/pgadmin4/bin/setup-web.sh 初始化并设置 pgAdmin 管理员主密码,访问 http://服务器IP:5050 登录。
- 连接信息:默认端口 5432;在 pgAdmin 中添加服务器时填写主机、端口、维护数据库(常用 postgres)、用户名与密码。
二 在 pgAdmin 中管理 PostgreSQL 用户与角色
- 登录与定位:以 pgAdmin 管理员登录,左侧展开 Servers → 目标服务器 → Login/Group Roles,右键可创建、编辑或删除角色/用户。
- 新建登录/角色:设置 名称、密码、是否允许登录(Can login)、是否为超级用户(Superuser)、可创建数据库(Create DB)、可创建角色(Create Role)等;保存后生效。
- 授予数据库权限:展开 Databases → 目标数据库 → Privileges,选择目标角色,勾选权限(如 CONNECT、CREATE、TEMPORARY),保存;必要时在 Schemas → public → Privileges 授予模式权限,在 Tables/Sequences 授予对象级权限。
- 常用图形化操作:创建用户/角色、编辑属性、删除对象;多数变更即时生效,如需批量或精确控制,可在 Query Tool 执行相应 GRANT/REVOKE 语句。
三 命令行快速操作与验证
- 切换与登录:执行 sudo su - postgres 进入数据库维护环境,运行 psql 连接数据库。
- 创建与授权示例:
- 创建受限用户:CREATE USER alice WITH PASSWORD ‘StrongPass!’;
- 授予数据库权限:GRANT ALL PRIVILEGES ON DATABASE sales TO alice;
- 授予模式与对象权限(按需):
- GRANT USAGE ON SCHEMA public TO alice;
- GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO alice;
- GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO alice;
- 使后续新建表自动继承权限:ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO alice;
- 查看与改密:
- 查看角色:\du
- 修改密码:\password alice
- 删除用户:DROP USER alice;(如提示被占用,先终止会话或更换连接用户)
- 验证:在 pgAdmin 以 alice 连接目标数据库,尝试访问表或执行操作,确认权限是否按预期生效。
四 认证与安全配置
- 配置文件位置:PostgreSQL 认证由 pg_hba.conf 控制,常见路径如 /etc/postgresql/<版本>/main/pg_hba.conf。
- 典型条目示例:
- 本地信任:local all all trust
- 内网口令:host all all 10.0.0.0/24 md5
- 变更生效:修改后执行 sudo service postgresql restart 或 sudo systemctl restart postgresql,并可用 ss -nlt | grep 5432 检查端口监听。
- 安全建议:
- 仅开放必要网段与认证方式(优先 md5/scram-sha-256),避免使用 trust 暴露公网。
- 为 pgAdmin 设置强密码并限制管理访问来源;服务器模式默认端口 5050,必要时配合反向代理与 TLS。
五 常见问题与排错
- 新建用户连不上:检查 pg_hba.conf 是否允许对应用户/网段的 md5/scram-sha-256 认证,并重启数据库;确认监听端口 5432 正常。
- 权限不足:在目标 Database/Schema/Table 的 Privileges 中为目标角色授予所需权限;必要时使用 ALTER DEFAULT PRIVILEGES 为后续对象预设权限。
- 无法删除用户:当前会话占用导致,先断开该用户会话或切换到其他管理员账户再执行 DROP USER。
- 忘记 postgres 密码:以 postgres 系统用户进入 psql,执行 ALTER USER postgres WITH PASSWORD ‘NewPass’; 更新密码。