PostgreSQL授权管理

database

默认创建用户可以登陆所有数据库,且拥有select,insert,update,delete权限 普通针对表授权,例如给默写表授权select,对授权表仅有select权限,但并不限制自己进行其他建表操作,为了处理这个问题,应该执行以下操作

初始化权限

dba账号登陆postgres库回收postgres,template0,template1的连接权

revoke connect on database postgres,template0,template from public;

建库并回收权限

此时新库没有建好,所以dba账号登陆postgres库进行建库并回收权限操作

create database db;

revoke connect on database db from public;

回收新库权限

如果是第一次建立数据库,则应该到对应的 新库 中执行回收权限

revoke all privileges on schema public from public;

创建用户并授权

此步骤应该在 新库 中执行,revoke与grant会在库对应的schema下进行权限操作:

# 创建用户

$do$

BEGIN

if not exists (select from pg_catalog.pg_roles where rolename = "heihei" ) then

create user %s with password "heihei";

end if;

end

$do$

#usage授权

grant usage on schema public to "heihei";

#连接授权

grant connect on database db to "heihei";

#存量授权

grant select,update,insert,delete on all tables in schema public to "heihei";

#增量授权

alter default privileges in schema public grant select,update,insert,delete on tables to "heihei";

#sequences授权,仅能对select跟update进行授权,需要提前判断

alter default privileges in schema public grant select[,update] on sequences to "heihei";

grant select[,update] on all sequences in schema public to "heihei";

以上,即可对存量及增量进行pgsql授权管理

以上是 PostgreSQL授权管理 的全部内容, 来源链接: utcz.com/z/535415.html

回到顶部