如何配置PostgreSQL只读用户?

PostgreSQL

1 前言

一个问题,一篇文章,一出故事。
笔者今天需要给PostgreSQL创建一个只读用户,于是整理当前章节。

2 最佳实践

2.1 准备PostgreSQL环境

如何Ubuntu部署PostgreSQL?

2.2 配置权限

2.2.1 使用超级用户登陆数据库

psql -U postgres -d myDB

2.2.2 创建用户

CREATE USER dbUser WITH PASSWORD 'dbUserPwd';

2.2.3 授予连接权限

GRANT CONNECT ON DATABASE myDB TO dbUser;

2.2.4 授予Schema权限

GRANT USAGE ON SCHEMA public TO dbUser;

2.2.5 授予只读权限

GRANT SELECT ON ALL TABLES IN SCHEMA public TO dbUser;

上面授权,如果没有执行“psql -U postgres -d myDB”,请执行“/c myDB”再执行,否则授权失败。
另外,如果需要指定独立的单表,请使用如下命令,

GRANT SELECT ON TABLE myTable TO dbUser;

确保新表自动取得权限

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO dbUser;

2.3 确认权限配置

2.3.1 查看用户角色属性

\du dbUser

2.3.2 查看schema权限

\dn+ public

2.3.3 查看所有表权限

\dp

2.4 确认权限

2.4.1 配置连接权限

vim /etc/postgresql/16/main/pg_hba.conf

加入如下配置,

host    myDB            dbUser     0.0.0.0/0         scram-sha-256

2.4.2 重载服务使配置生效

systemctl reload postgresql

2.5 测试用户登陆

2.5.1 测试用户登陆

psql -h postgresql.cmdschool.org -U dbUser -d myDB

2.5.2 测试查询

select * from myTab
没有评论

发表回复

PostgreSQL
如何Ubuntu部署PostgreSQL?

1 基础知识 1.1 PostgreSQL简介 PostgreSQL是一个功能强大的开源对象关系数据 …

PostgreSQL
如何使用yum部署PostgreSQL 9?

1 基础知识 1.1 PostgreSQL简介 PostgreSQL是一个功能强大的开源对象关系数据 …

PostgreSQL
如何管理PostgreSQL的角色?

1 基础知识 1.1 角色的概念 – PostgreSQL使用角色概念管理数据库访问权限 …