温馨提示×

centos pgadmin如何设权限

小樊
42
2026-09-21 11:06:50
栏目: 智能运维

在 CentOS 上,给 pgAdmin 设权限,通常分两种场景:

  1. 系统层面:谁能访问 pgAdmin 网页 / 服务器
  2. 数据库层面:pgAdmin 里不同用户能看/操作哪些库和表

下面分别说明。


一、pgAdmin 访问权限(谁能用 pgAdmin)

1. pgAdmin 4(Web 模式,最常见)

pgAdmin 4 本身 没有“多用户角色系统”,它依赖 PostgreSQL 用户权限。

登录控制

  • pgAdmin 登录账号 = 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

2. 限制 pgAdmin Web 端口

如果你用的是 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'

二、pgAdmin 里数据库权限(重点)

✅ 真正“权限”是在 PostgreSQL 里设的,不是 pgAdmin

1. 创建只读用户(常见需求)

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;

2. 创建读写用户

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;

3. 管理员用户

CREATE ROLE admin_user WITH LOGIN PASSWORD 'pwd' SUPERUSER;

三、pgAdmin 中“看不见某些库”的原理

  • pgAdmin 只能看到你有权限的库
  • 没 CONNECT 权限的库不会显示

示例:禁止某用户看 test 库

REVOKE CONNECT ON DATABASE test FROM user1;

四、CentOS 文件权限(不常改)

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

如果你能说清楚:

  • pgAdmin 版本(3 / 4)
  • Web 还是桌面
  • 想限制“人”还是“数据库对象”

我可以直接给你一套 可复制的 SQL + 配置。

0 踩