目录

pgsql-29 用户权限管理

29 - 用户权限管理

1. 📖 概述

合理的权限管理是数据库安全的基础。

2. 👥 用户管理

2.1 创建用户

-- 普通用户
CREATE USER myapp WITH PASSWORD 'password';

-- 超级用户
CREATE USER admin WITH SUPERUSER PASSWORD 'admin_pass';

-- 带权限
CREATE USER developer WITH
    PASSWORD 'dev_pass'
    CREATEDB
    VALID UNTIL '2025-12-31';

2.2 角色管理

-- 创建角色
CREATE ROLE readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly;

-- 将角色授予用户
GRANT readonly TO myuser;

3. 🔐 权限控制

3.1 数据库级权限

GRANT CONNECT ON DATABASE mydb TO myuser;
GRANT ALL PRIVILEGES ON DATABASE mydb TO admin;
REVOKE CONNECT ON DATABASE mydb FROM PUBLIC;

3.2 表级权限

GRANT SELECT, INSERT, UPDATE ON users TO myapp;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO admin;
REVOKE INSERT, UPDATE ON sensitive_table FROM myapp;

3.3 行级安全(RLS)

ALTER TABLE users ENABLE ROW LEVEL SECURITY;

CREATE POLICY user_policy ON users
    FOR SELECT
    USING (id = current_user_id());

4. 📚 下一步

学习数据迁移方案