温馨提示×

ubuntu pgadmin怎样设权限

小樊
37
2026-10-18 10:12:06
栏目: 智能运维

在 Ubuntu 上使用 pgAdmin 管理 PostgreSQL 权限,通常涉及两个层面:

  1. pgAdmin 登录/连接权限(谁能连 pgAdmin / PostgreSQL)
  2. PostgreSQL 数据库对象权限(用户能对表、库做什么)

下面按常见场景说明。


一、PgAdmin 本身的“访问权限”

1. 控制谁能连接 PostgreSQL 服务器

PgAdmin 本身没有独立账号体系(除非用 pgAdmin 4 的 Web 模式),权限主要来自 PostgreSQL 用户。

创建受限用户

-- 创建用户
CREATE USER readonly_user WITH PASSWORD 'password';

-- 只允许连接某个数据库
GRANT CONNECT ON DATABASE mydb TO readonly_user;

在 pgAdmin 中

  • 右键 Servers → Create → Server
  • 在 Connection 里填写该用户的账号
  • 该用户在 pgAdmin 中只能看到被授权的对象

二、PostgreSQL 用户权限设置(重点)

1. 只读权限(常见)

-- 授权连接数据库
GRANT CONNECT ON DATABASE mydb TO readonly_user;

-- 使用 schema
GRANT USAGE ON SCHEMA public TO readonly_user;

-- 只读所有表
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_user;

-- 未来新建表也只读
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO readonly_user;

2. 读写权限

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

ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO app_user;

3. 管理员权限

ALTER USER admin_user WITH SUPERUSER;

⚠️ 生产环境不建议随意给 SUPERUSER


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

  1. 打开 pgAdmin
  2. 展开:
    Servers → 你的服务器 → Databases → 数据库 → Schemas → public → Tables
    
  3. 右键表 → Properties → Privileges
  4. 添加用户并勾选权限(SELECT / INSERT / UPDATE 等)

四、Web 版 pgAdmin(Ubuntu 服务器常见)

如果你用的是 pgAdmin 4 Web 模式:

1. 登录 pgAdmin 的“主账号”

sudo /usr/pgadmin4/bin/setup-web.sh

2. 权限控制方式

  • pgAdmin Web 不控制数据库权限
  • 只能控制“谁能登录 pgAdmin”
  • 真正的权限还是 PostgreSQL 用户决定

五、常见权限错误排查

1. 用户连不上

检查:

SELECT * FROM pg_hba_file_rules;

Ubuntu 配置文件:

/etc/postgresql/<<version>>/main/pg_hba.conf

2. 看不到表

通常是缺:

GRANT USAGE ON SCHEMA public TO user;

六、推荐权限管理实践

  • 一个应用一个用户
  • 不用 superuser
  • 只读 / 读写分离
  • 用 ALTER DEFAULT PRIVILEGES 管理新表

如果你能告诉我:

  • 用的是 pgAdmin 4 桌面版还是 Web 版
  • 想给 开发 / 只读 / 运维 哪种权限

我可以直接给你一套完整 SQL + 操作步骤。

0 踩