PostgreSQL 创建只读账户

一、创建用户

sql 复制代码
CREATE USER readonly WITH PASSWORD 'readonly';

二、授予只读权限

你可以对一个数据库下的所有表授予只读权限。下面是授予权限的通用步骤:

1. 授予连接权限

sql 复制代码
GRANT CONNECT ON DATABASE mydb TO readonly;

2. 授予 schema 的使用权限

sql 复制代码
GRANT USAGE ON SCHEMA public TO readonly;

如果你使用的是其他 schema,请替换 public

3. 授予所有已有表的 SELECT 权限

sql 复制代码
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly;

4. 授予未来表的 SELECT 权限(防止以后新增的表无法访问)

sql 复制代码
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO readonly;

三、禁止写操作

虽然只授予了 SELECT 权限,但你可能仍想防止用户误操作,比如创建表、更新表结构,可以拒绝这些权限:

sql 复制代码
-- 禁止创建表等 DDL 操作
REVOKE CREATE ON SCHEMA public FROM readonly;

四、验证权限

以该用户连接数据库后执行以下命令测试权限:

sql 复制代码
-- 测试查询(应该成功)
SELECT * FROM some_table;

-- 测试写入(应该失败)
INSERT INTO some_table (col) VALUES ('test');
相关推荐
大牧师6 分钟前
Mybatis 框架教程
java·数据库·mybatis·数据持久化·orm
有想法的py工程师1 小时前
PostgreSQL【内核】 CBO 优化器的“早停下注”与数学模型失效分析
数据库·postgresql
冰暮流星1 小时前
sql之计算
数据库·sql
dishugj2 小时前
HANA集群状态监控
数据库·系统架构
小蒜学长2 小时前
基于Java的公司采购系统的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·公司采购系统
lee_tianbai2 小时前
Java SSM 电影票预定系统|完整前后端项目,开箱即用(源码分享)
java·开发语言·数据库
SM_YHJ2 小时前
RFID通道门禁与资产台账联动的自动登记技术实现方案
大数据·数据库·人工智能
PaperData2 小时前
2014-2024年省级居民消费结构升级
数据库
砚底藏山河2 小时前
python量化入门:多周期数据对齐统一时间轴
java·数据库·python·金融·maven
Java后端的Ai之路3 小时前
昇腾NPU显存管理避坑指南:从npu-smi输出精准识别空闲卡的底层逻辑与实战
服务器·网络·数据库·npu·大模型服务