在 Linux 上,PgAdmin 本身不管理 PostgreSQL 权限,它只是一个管理工具。真正的“权限”是在 PostgreSQL 数据库里通过角色(Role)和权限(GRANT)来控制 的。
下面分 两种常见场景 说明。
sudo -u postgres psql
CREATE ROLE dev_user WITH LOGIN PASSWORD '123456';
GRANT CONNECT ON DATABASE mydb TO dev_user;
编辑:
/etc/postgresql/15/main/pg_hba.conf
示例(只允许 192.168.1.100):
host mydb dev_user 192.168.1.100/32 md5
重启:
sudo systemctl restart postgresql
GRANT ALL PRIVILEGES ON DATABASE mydb TO dev_user;
GRANT USAGE ON SCHEMA public TO dev_user;
GRANT SELECT, INSERT, UPDATE ON ALL TABLES IN SCHEMA public TO dev_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT, INSERT ON TABLES TO dev_user;
CREATE ROLE readonly LOGIN PASSWORD 'ro123';
GRANT CONNECT ON DATABASE mydb TO readonly;
GRANT USAGE ON SCHEMA public TO readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly;
如果你说的是 PgAdmin 4 Web 版:
sudo /usr/pgadmin4/bin/setup-web.sh
⚠️ 注意:
PgAdmin 用户 ≠ PostgreSQL 用户
PgAdmin 用户只是“界面账号”,真正权限还是 PostgreSQL 控制的。
| 需求 | 做法 |
|---|---|
| 只读 | SELECT |
| 读写 | SELECT, INSERT, UPDATE |
| DBA | SUPERUSER |
| 禁止删表 | 不授予 DROP |
| 禁止改结构 | 不授予 CREATE |
PgAdmin 只是客户端,权限全部在 PostgreSQL 里用 Role + GRANT 控制。
如果你能告诉我:
我可以直接给你一套可复制的 SQL。