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');
相关推荐
AA-代码批发V哥3 分钟前
MySQL-DDL语句深度解析与实战指南
数据库·mysql
big狼王6 分钟前
sqlserver存储过程中入参使用JSON
数据库·sqlserver·json
悦数图数据库42 分钟前
图数据库如何构筑 Web3 风控防线 | 聚焦批量注册与链上盗转
数据库·web3
gbase_lmax1 小时前
gbase8s数据库获取jdbc/odbc协议的几种方式
数据库
奈斯ing1 小时前
【prometheus+Grafana篇】基于Prometheus+Grafana实现postgreSQL数据库的监控与可视化
运维·数据库·信息可视化·grafana·prometheus
fengfuyao9851 小时前
使用ubuntu串口数据收和发不一致问题
linux·数据库·ubuntu
张童瑶2 小时前
Docker 下备份 Mariadb 数据库文件
数据库·docker·mariadb
Forest_HAHA2 小时前
<8>-MySQL复合查询
数据库·mysql
march of Time2 小时前
图数据库介绍及应用,go和Java使用图数据库
java·数据库·golang
大博bs3 小时前
使用HashMap或者List模拟数据库插入和查询数据
数据库·list