Debian 上 pgAdmin 的权限设置
一 权限模型与基本原则
二 操作系统与 pgAdmin 服务账户权限
三 在 pgAdmin 中配置数据库权限
登录 pgAdmin 后,使用左侧对象浏览器对目标对象(库、模式、表、函数等)执行授权:
常用授权示例(在 psql 或 pgAdmin 的查询工具中执行):
– 1) 创建只读角色并授予 schema 使用与表/视图只读
CREATE ROLE readonly NOINHERIT;
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;
– 2) 创建读写角色
CREATE ROLE readwrite NOINHERIT;
GRANT USAGE ON SCHEMA public TO readwrite;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO readwrite;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO readwrite;
– 3) 将角色授予用户
CREATE USER app_user WITH PASSWORD ‘StrongPass!’;
GRANT readonly TO app_user; – 或 GRANT readwrite TO app_user;
– 4) 撤销某用户对 public 下所有表的 SELECT
REVOKE SELECT ON ALL TABLES IN SCHEMA public FROM user1;
– 5) 将对象所有权转移到新角色(变更属主前先确保新角色具备相应权限)
ALTER TABLE public.tbl OWNER TO new_role;
权限审计与回收:
– 查看角色权限
\du+
– 查看表级权限明细
SELECT table_catalog, table_schema, table_name, privilege_type
FROM information_schema.table_privileges
WHERE grantee = ‘user1’;
– 安全删除角色(逐库执行,先转移所有权与权限)
REASSIGN OWNED BY user1 TO new_role;
DROP OWNED BY user1;
DROP ROLE user1;
以上操作可在 pgAdmin 界面完成,也可用 SQL 精确控制。
四 常见场景与推荐做法
五 安全加固清单