在 Ubuntu 上使用 pgAdmin 管理 PostgreSQL 权限,通常涉及两个层面:
下面按常见场景说明。
PgAdmin 本身没有独立账号体系(除非用 pgAdmin 4 的 Web 模式),权限主要来自 PostgreSQL 用户。
-- 创建用户
CREATE USER readonly_user WITH PASSWORD 'password';
-- 只允许连接某个数据库
GRANT CONNECT ON DATABASE mydb TO readonly_user;
-- 授权连接数据库
GRANT CONNECT ON DATABASE mydb TO readonly_user;
-- 使用 schema
GRANT USAGE ON SCHEMA public TO readonly_user;
-- 只读所有表
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_user;
-- 未来新建表也只读
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO readonly_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;
ALTER USER admin_user WITH SUPERUSER;
⚠️ 生产环境不建议随意给 SUPERUSER
Servers → 你的服务器 → Databases → 数据库 → Schemas → public → Tables
如果你用的是 pgAdmin 4 Web 模式:
sudo /usr/pgadmin4/bin/setup-web.sh
检查:
SELECT * FROM pg_hba_file_rules;
Ubuntu 配置文件:
/etc/postgresql/<<version>>/main/pg_hba.conf
通常是缺:
GRANT USAGE ON SCHEMA public TO user;
ALTER DEFAULT PRIVILEGES 管理新表如果你能告诉我:
我可以直接给你一套完整 SQL + 操作步骤。