如何配置PostgreSQL只读用户?
- By : Will
- Category : PostgreSQL

PostgreSQL
1 前言
一个问题,一篇文章,一出故事。
笔者今天需要给PostgreSQL创建一个只读用户,于是整理当前章节。
2 最佳实践
2.1 准备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
没有评论