温馨提示×

ubuntu pgadmin如何设权限

小樊
34
2026-10-21 06:31:10
栏目: 智能运维

在 Ubuntu 上通过 pgAdmin 设置 PostgreSQL 权限,一般分两种场景:

  1. pgAdmin 自身的登录/操作权限(谁能用 pgAdmin 连哪个服务器)
  2. PostgreSQL 数据库对象权限(用户能对表、库、模式做什么)

下面分别说明。


一、pgAdmin 连接权限(谁能连、能看什么)

1. 创建 pgAdmin 用户(可选,pgAdmin 4 默认用邮箱登录)

# 启动 pgAdmin 后,首次访问会让你注册管理员邮箱和密码

如果你用 pgAdmin 4(Web 模式):

  • 登录邮箱 = pgAdmin 用户
  • 每个用户只能看到自己添加的服务器

2. 限制某个用户只能连特定数据库

在 pgAdmin 中:

  1. 右键 Servers → Register → Server
  2. 在 Connection 中指定:
    • Host
    • Port
    • Maintenance database(如 postgres 或某个库)
    • Username(数据库用户)
  3. 保存后,该 pgAdmin 用户只能看到这个连接

⚠️ pgAdmin 本身不控制数据库权限,只控制“能否连进来”


二、PostgreSQL 数据库权限(核心)

权限是在 PostgreSQL 里设置的,pgAdmin 只是图形界面。

1. 创建数据库用户

CREATE ROLE dev_user WITH LOGIN PASSWORD '123456';

2. 授予数据库权限

GRANT CONNECT ON DATABASE mydb TO dev_user;

3. 授予 Schema 权限

GRANT USAGE ON SCHEMA public TO dev_user;

4. 授予表权限

GRANT SELECT, INSERT, UPDATE ON ALL TABLES IN SCHEMA public TO dev_user;

5. 撤销权限

REVOKE DELETE ON ALL TABLES IN SCHEMA public FROM dev_user;

三、在 pgAdmin 图形界面设置权限

  1. 打开 pgAdmin
  2. 找到:
    Databases → mydb → Schemas → public → Tables → 某表
    
  3. 右键表 → Properties → Privileges
  4. 添加用户并勾选:
    • SELECT
    • INSERT
    • UPDATE
    • DELETE
    • TRUNCATE 等

四、常见权限场景示例

✅ 只读用户

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

✅ 开发用户(不能删库)

GRANT CONNECT, TEMP ON DATABASE mydb TO dev;
GRANT USAGE, CREATE ON SCHEMA public TO dev;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO dev;

✅ 超级管理员

ALTER ROLE admin_user SUPERUSER;

五、Ubuntu 上常见问题

pg_hba.conf 控制“谁能连”

sudo nano /etc/postgresql/15/main/pg_hba.conf

示例(允许密码登录):

host    all    all    0.0.0.0/0    md5

改完重启:

sudo systemctl restart postgresql

如果你能告诉我:

  • pgAdmin 版本(桌面 / Web)
  • PostgreSQL 版本
  • 想实现什么权限(只读 / 开发 / 多用户隔离)

我可以直接给你一套可复制的命令 + pgAdmin 操作步骤。

0 踩