温馨提示×

centos如何设置pgadmin权限

小樊
44
2026-10-14 23:29:47
栏目: 智能运维

在 CentOS 上“设置 pgAdmin 权限”通常分为 两个层面:

  1. 系统/文件层面:谁能在 CentOS 上运行、访问 pgAdmin
  2. 数据库权限层面:pgAdmin 登录后能看到/操作哪些数据库、表

下面按常见场景说明。


一、pgAdmin 运行方式决定权限设置

场景 1:pgAdmin 4(Web 模式,最常见)

在 CentOS 上通常以:

  • httpd + pgadmin4(系统包)
  • 或 python venv + gunicorn

1)Web 访问权限(登录 pgAdmin 本身)

pgAdmin 4 本身有「管理员账号」:

# 初始化管理员账号
pgadmin4-setup.sh
# 或
python setup.py
  • 只有登录 pgAdmin 的用户才能看到服务器
  • 不同 pgAdmin 用户 = 不同可见服务器列表

✅ 权限隔离通过 pgAdmin 用户实现,不是 Linux 用户


2)Linux 文件权限(可选)

如果多人共用服务器:

# pgAdmin 配置目录
/var/lib/pgadmin
/var/log/pgadmin

chown -R apache:apache /var/lib/pgadmin
chmod 700 /var/lib/pgadmin

二、pgAdmin 中的数据库权限(核心)

pgAdmin 只是 PostgreSQL 的客户端,真正权限在 PostgreSQL。

1)创建受限用户

CREATE ROLE appuser LOGIN PASSWORD 'pwd';

2)只给某些库权限

GRANT CONNECT ON DATABASE mydb TO appuser;
GRANT USAGE ON SCHEMA public TO appuser;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO appuser;

3)禁止创建对象

ALTER ROLE appuser NOSUPERUSER NOCREATEDB NOCREATEROLE;

在 pgAdmin 中:

  • 用 appuser 登录
  • 只能看到被授权的库和表

三、限制 pgAdmin 能连接的主机(CentOS 层)

1)PostgreSQL 层

pg_hba.conf:

host    mydb    appuser    192.168.1.0/24    md5

2)防火墙(CentOS)

firewall-cmd --add-port=5432/tcp --permanent
firewall-cmd --reload

四、常见需求示例

✅ 只让某人看一个库

  1. 建 PG 用户
  2. 只 GRANT 该库
  3. pgAdmin 用该用户注册服务器

✅ 禁止删表

REVOKE DELETE ON ALL TABLES IN SCHEMA public FROM appuser;

✅ 只读账号

GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly;

五、总结一句话

CentOS 上 pgAdmin 的“权限” = pgAdmin 登录账号 + PostgreSQL 角色权限

如果你能告诉我:

  • pgAdmin 版本(3 / 4)
  • 运行方式(web / 桌面)
  • 想控制的是「人」还是「数据库对象」

我可以给你更精确的步骤。

0 踩