本章介绍角色与权限。PostgreSQL 使用角色来表示用户账号,而不是其它数据库那样使用用户概念。
创建角色
语法:
CREATE ROLE 角色名 WITH 选项;
选项
可以是以下的一个或多个:
LOGIN
:可登录角色PASSWORD '密码'
:为角色设置密码SUPERUSER
:超级用户CREATEDB
:可创建数据库CREATEROLE
:可创建角色VALID UNTIL '过期时间'
:设置角色的密码的有效期CONNECTION LIMIT 整数
:设置角色可建立的并发连接数
日常应用中,通常会为每个项目/服务创建独立的数据库和角色,基于最小权限原则,在不影响业务的情况,我们只需要 LOGIN
和PASSWORD
选项。假设,我们要为 axum.rs 创建数据库和对应的角色:
-- 以超级用户角色操作
-- 创建角色
CREATE ROLE axum_rs WITH LOGIN PASSWORD 'axum.rs';
-- 创建数据库,并指定所有者
CREATE DATABASE axum_rs WITH OWNER = axum_rs;
分配权限
语法:
GRANT 权限列表 | ALL
ON 表名
TO 角色名;
权限列表
可以是下以值的一个或多个:
SELECT
:允许执行SELECT
语句INSERT
:允许执行INSERT
语句UPDATE
:允许执行DELETE
语句TRUNCATE
:允许执行TRUNCATE
回收权限
可以回收某个角色的权限,语法如下:
选项和分配权限一样。