Ubuntu 上使用 pgAdmin 创建与管理数据库用户
一 准备工作
- 安装组件:在 Ubuntu 上安装 PostgreSQL 与 pgAdmin4(桌面或 Web 模式均可)。完成后启动服务,并在 pgAdmin 中通过“Servers → Create → Server…”建立到本机或远程数据库的连接(主机 localhost、端口 5432、初始账号通常为 postgres)。如使用 Web 模式,常见访问地址为 http://127.0.0.1:5050。为安全起见,首次登录后应修改 postgres 用户密码,并确保操作系统防火墙与数据库访问策略已正确配置。
二 在 pgAdmin 中创建数据库用户
- 打开左侧导航,展开目标服务器,进入 Login Roles / Users,右键选择 Create → Login Role…(或“Create → User…”)。在“General”页填写用户名与密码,勾选 Login/Group Role 以允许登录;在“Role Privileges”页可按需勾选 CREATEDB / CREATEROLE / SUPERUSER 等系统权限;在“Role Memberships”页可将用户加入现有角色(如只读角色 pg_read_all_data)以复用权限;保存后用户即创建完成。上述图形化流程与参数含义与 PostgreSQL 的 CREATE USER/ROLE 一致,可在界面中按需组合。
三 为用户授予权限
- 数据库级权限:在左侧展开目标数据库(如 mydb),右键 Users 或进入数据库属性,在“Privileges”页为用户勾选 ALL PRIVILEGES 或按需选择 CONNECT / CREATE / TEMP 等,保存生效。
- 模式与表级权限:展开 Schemas → public → Tables,右键目标表 → Properties → Permissions,点击“+”添加用户,授予 SELECT / INSERT / UPDATE / DELETE 等细粒度权限;对视图、函数、序列等对象也可按相同方式授权。
- 角色复用:创建自定义角色(如 data_reader),在角色“Privileges”中授予对指定库/表/模式的权限;随后在用户“Role Memberships”中把用户加入该角色,实现权限的模块化复用与集中管理。
四 日常管理与安全加固
- 修改与撤销:在用户属性中可随时修改密码与权限;撤销权限可使用 SQL 命令 REVOKE,如:REVOKE SELECT ON TABLE tab FROM username; 需要查看对象权限时,可在 psql 中使用 \dp 或 \z 辅助核对。
- 删除用户:在 Login Roles / Users 中右键目标用户选择 Delete。删除前应确认无活跃会话(可查询 pg_stat_activity),若该用户拥有对象需先转移所有权(如:ALTER TABLE tbl OWNER TO new_owner;)或删除对象,避免删除失败。
- 安全建议:启用 SSL/TLS 加密连接(postgresql.conf 中设置 ssl = on,pg_hba.conf 使用 hostssl),通过 pg_hba.conf 限制来源 IP,使用 ufw 等防火墙限制访问,并定期审计与轮换口令。
五 常见问题与快速命令
- 连接失败:核对 pg_hba.conf 的认证方式(如 md5)、监听地址与端口,必要时仅对受信网段开放;远程访问需确保网络与防火墙策略允许。
- 权限不生效:对象权限遵循层级与继承,确认在正确的 数据库/模式/表 作用域授权;对序列、视图等对象单独授权;必要时用 \dp 检查 ACL。
- 命令行补充(可选):批量或自动化场景可用 psql 执行
- 创建用户:CREATE USER username WITH PASSWORD ‘password’ LOGIN;
- 授予库权限:GRANT ALL PRIVILEGES ON DATABASE dbname TO username;
- 撤销权限:REVOKE SELECT ON TABLE tbl FROM username;
以上语句与 pgAdmin 图形化授权等效,可用于验证与批量处理。