在 CentOS 上,给 pgAdmin 设权限,通常分两种场景:
下面分别说明。
pgAdmin 4 本身 没有“多用户角色系统”,它依赖 PostgreSQL 用户权限。
pg_hba.conf 中控制谁能连示例(CentOS 路径通常):
/var/lib/pgsql/<版本>/data/pg_hba.conf
只允许某个 IP 访问:
host all all 192.168.1.100/32 md5
改完重启:
systemctl restart postgresql
如果你用的是 pgAdmin Web 模式:
firewall-cmd --permanent --add-port=5050/tcp
firewall-cmd --reload
只允许特定 IP:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="5050" protocol="tcp" accept'
✅ 真正“权限”是在 PostgreSQL 里设的,不是 pgAdmin
CREATE ROLE read_only WITH LOGIN PASSWORD 'pwd';
GRANT CONNECT ON DATABASE mydb TO read_only;
GRANT USAGE ON SCHEMA public TO read_only;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only;
CREATE ROLE app_user WITH LOGIN PASSWORD 'pwd';
GRANT CONNECT ON DATABASE mydb TO app_user;
GRANT USAGE, CREATE ON SCHEMA public TO app_user;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO app_user;
CREATE ROLE admin_user WITH LOGIN PASSWORD 'pwd' SUPERUSER;
CONNECT 权限的库不会显示示例:禁止某用户看 test 库
REVOKE CONNECT ON DATABASE test FROM user1;
pgAdmin 配置文件一般在:
/var/lib/pgadmin4/
/etc/pgadmin4/
确保权限正确:
chown -R pgadmin:pgadmin /var/lib/pgadmin4
chmod 700 /var/lib/pgadmin4
| 需求 | 做法 |
|---|---|
| 只能看不能改 | GRANT SELECT |
| 只能连特定库 | GRANT CONNECT |
| 禁止登录 pgAdmin | 无 DB 权限 |
| 多团队隔离 | 不同 schema + 不同 role |
如果你能说清楚:
我可以直接给你一套 可复制的 SQL + 配置。