pgAdmin在Linux中如何进行权限管理
导读:pgAdmin在Linux中的权限管理 一 管理层次与总体思路 在 Linux 上使用 pgAdmin 4 进行权限管理,通常涉及三层: 系统层:操作系统用户与组、文件与目录权限、服务与端口访问控制; 应用层:pgAdmin 自身的登录...
pgAdmin在Linux中的权限管理
一 管理层次与总体思路
- 在 Linux 上使用 pgAdmin 4 进行权限管理,通常涉及三层:
- 系统层:操作系统用户与组、文件与目录权限、服务与端口访问控制;
- 应用层:pgAdmin 自身的登录账户与角色(如管理员、编辑者、查看者),用于登录 Web 界面与分配操作范围;
- 数据库层:PostgreSQL 的 角色/用户、数据库/模式/表/列 的 ACL(访问控制列表) 与授权,这是最终生效的数据访问权限。pgAdmin 本质是对 PostgreSQL 权限系统的图形化管理入口。
二 系统层安全与访问控制
- 运行与访问账户
- 建议创建专用的系统用户运行 pgAdmin(无登录权限),并将需要访问 Web 界面的人员加入同一组,便于统一管理:
- 创建系统用户:
sudo adduser --system --no-create-home --group pgadmin_svc - 将运维人员加入组:
sudo groupadd pgadmin & & sudo usermod -aG pgadmin webadmin
- 创建系统用户:
- 建议创建专用的系统用户运行 pgAdmin(无登录权限),并将需要访问 Web 界面的人员加入同一组,便于统一管理:
- 文件与目录权限
- 安装目录与配置文件的权限最小化原则:
sudo chown -R root:pgadmin /usr/pgadmin4sudo chmod -R 750 /usr/pgadmin4sudo chmod 600 /etc/pgadmin4/pgadmin4.conf & & sudo chown root:root /etc/pgadmin4/pgadmin4.conf
- 安装目录与配置文件的权限最小化原则:
- 服务与端口
- 常见部署端口为 5050;若启用防火墙,仅放行必要来源与端口:
sudo firewall-cmd --permanent --add-port=5050/tcp & & sudo firewall-cmd --reload
- 常见部署端口为 5050;若启用防火墙,仅放行必要来源与端口:
- 访问限制
- 建议启用 HTTPS 并限制可访问的 IP/网段,降低暴露面。
三 pgAdmin应用层账户与角色
- 登录与初始化
- 通过浏览器访问 http://<
服务器IP>
/pgadmin4,首次使用
sudo /usr/pgadmin4/bin/setup-web.sh设置 主密码 完成初始化。
- 通过浏览器访问 http://<
服务器IP>
/pgadmin4,首次使用
- 创建与管理 pgAdmin 用户
- 在 pgAdmin 的 Object → Browser → Servers → Properties → Security 中添加用户,设置用户名与密码,并分配角色(如 Administrator/Editor/Viewer),以控制其在 pgAdmin 中的操作范围与可见性。
- 连接服务器与对象浏览
- 在左侧 Servers 节点中新增服务器连接(主机、端口、数据库、用户名、密码),连接后即可在对象浏览器中对数据库对象进行权限配置。
四 PostgreSQL数据库层权限配置
- 创建角色与用户
- 在 pgAdmin 中展开 Servers → 登录名/角色 → 创建 → 登录名,填写用户名与密码;或在 psql 中执行:
CREATE USER app_user WITH PASSWORD 'StrongPass!';
- 在 pgAdmin 中展开 Servers → 登录名/角色 → 创建 → 登录名,填写用户名与密码;或在 psql 中执行:
- 角色继承与批量授权
- 通过角色继承实现层级授权(减少重复配置):
CREATE ROLE data_reader NOINHERIT;GRANT SELECT ON ALL TABLES IN SCHEMA public TO data_reader;CREATE ROLE report_user INHERIT;GRANT data_reader TO report_user;GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO report_user;
- 通过角色继承实现层级授权(减少重复配置):
- 对象级 ACL 授权
- 在 pgAdmin 的对象属性 Permissions 页为指定用户/角色授予 SELECT/INSERT/UPDATE/DELETE/ALL 等权限;或用 SQL 精确控制:
- 表级:
GRANT SELECT, INSERT ON table_name TO role_name; - 列级:
GRANT SELECT(column_name) ON table_name TO role_name; - 模式使用:
GRANT USAGE ON SCHEMA public TO role_name;
- 表级:
- 在 pgAdmin 的对象属性 Permissions 页为指定用户/角色授予 SELECT/INSERT/UPDATE/DELETE/ALL 等权限;或用 SQL 精确控制:
- 验证与回滚
- 使用不同账户登录验证权限边界;复杂变更建议先在测试环境验证,必要时回滚或调整授权粒度。
五 常见场景与命令示例
- 只读用户
- 创建只读角色并授予公共模式的 SELECT:
CREATE ROLE readonly NOINHERIT;GRANT CONNECT ON DATABASE target_db 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 USER report_user WITH PASSWORD 'pwd'; GRANT readonly TO report_user;
- 创建只读角色并授予公共模式的 SELECT:
- 应用专用用户
- 创建用户并授予单库全部权限(谨慎授予 OWNER,按需最小化):
CREATE USER app_user WITH PASSWORD 'pwd';CREATE DATABASE app_db OWNER app_user;(或仅授予 CONNECT/CREATE/USAGE 等)
- 创建用户并授予单库全部权限(谨慎授予 OWNER,按需最小化):
- 撤销与回收
- 回收权限或删除对象:
REVOKE ALL PRIVILEGES ON DATABASE target_db FROM app_user;、DROP USER app_user;
- 回收权限或删除对象:
- 远程访问与防火墙
- 若 pgAdmin 与数据库不在同一主机,需确保数据库
pg_hba.conf与防火墙对应用网段放行,并在 pgAdmin 新建服务器连接时使用正确的主机与端口。
- 若 pgAdmin 与数据库不在同一主机,需确保数据库
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: pgAdmin在Linux中如何进行权限管理
本文地址: https://pptw.com/jishu/756426.html
