最近需要做一个pg库的权限管理分配. 也就是创建一个用户,只允许制定IP访问,同时只有增删改查权限.
1.设置监听
vi postgresql.conf, 开启监听,设置端口
listen_addresses = '*'
port = 5432
2 .设置IP访问列表
vi pg_hbd.conf
#TYPE DATABASE USER ADDRESS METHOD
host testdb testuser 192.168.1.13/32 MD5
这里就是允许testuser从 192.168.1.13 这唯一的一个IP访问testdb数据库,并使用密码认证。
3 . 开始设置权限
当你开始建立一个新库的时候,系统会自动创建一个public的schema,正常情况下,普通用户创建的表 都在public下。默认情况下,普通用户是有在public下创建表的权限。
那么我们想建立一个只有增删改查权限的user,就要做到2点,
第一,禁止它在public下面有创建或者DDL的权利。
第二,改变这个用户的默认schema,并管理用户在这个schema下的读写权限。
PS: 这里需要注明下,oracle的schema是与用户名一样的。而pg的schema,普通用户默认是public。也可以指定用户的schema名称。也可以把多个用户名指定到同一个schema下面。
第一步: 禁止public下的创建权限
revoke create on schema public from public;
revoke all on schema public from public;
可以all 也可以仅仅禁止create。
第二步:
创建新schema并设置权限
show search_path
create schema app;
set search_path to apps;
也可以修改库级别的search_path
alter database "testdb" set search_path to app;(看清需求再使用)
设置权限:
alter default privileges in schema app grant select,insert,update,delete,reference on tables to testuser;
grant usage on schema app to testuser;