PostgreSQL 作为世界上最领先的开源数据库,有一套强大的用户角色权限系统,和 MySQL 做一个对比:
但硬币的另一面则是对于简单场景来说增加了复杂度。在许多单应用场景,其实也不需要额外的 schema 层,也不需要额外的 owner。相信玩过 PG 的同学都碰到过类似 must be owner of table 的问题。
场景说明
我们就来说说简单的 PG 使用场景,数据库用户该如何配。所谓简单是指:
- PG 实例就一个数据库
- 数据库就一个默认的 public schema
- 所有的表都在这个 public schema 下
而使用数据库的场景,由人到数据库,和应用到数据库两部分组成:
人到数据库
- DBA 操作
- 数据库变更,DDL 和 DML 都有
- 数据库查询
应用到数据库
- 数据库变更,DDL 的话通常在应用启动前做,除此之外都是 DML
- 数据库查询
具体配置
最简单粗暴的当然是一个 superuser 搞定。本地安装 postgres 的话,第一个 postgres 用户其实就是这样的 superuser。