PG的逻辑结构 instance->database->schema->object 权限体系实例权限->pg_hba.confdatabase权限->grant 或revoke是否允许connect或create schema权限scehma权限->grant或revoke是否允许查询schema中的对象、在schema中创建对象object权限->grant或revoke select\insert\update\delete等权限表空间->grant赋与允许在对应表空间创建表、索引、临时表等 默认权限 数据库在创建后,允许public角色连接,即允许任何人连接。数据库在创建后,不允许除了超级用户和owner之外的任何人在数据库中创建schema。数据库在创建后,会自动创建名为public的schema,这个schema的all权限已经赋予给了public角色,即允许任何人在里面创建对象,但对己存在的其它用户的表不具有任何权限,包括select 权限查询1、查看数据库哪些用户可以connectselect datname,datacl from pg_database where datname='su_db';2、查看指定schema用户所拥有的权限select nspname,nspacl from pg_namespace where nspname='schema_001';3、查看某用户的表权限select * from information_schema.table_privileges where grantee='user_su'; 字母代表的权限的意思如下: r -- SELECT ("read") w -- UPDATE ("write") a -- INSERT ("append") d -- DELETE D -- TRUNCATE x -- REFERENCES t -- TRIGGER X -- EXECUTE U -- USAGE C -- CREATE c -- CONNECT T -- TEMPORARY arwdDxt -- ALL PRIVILEGES (for tables, varies for other objects) * -- grant option for preceding privilege 权限设置1、#创建数据库后,取消public登录权限,不影响己连接的sessionrevoke CONNECT ON DATABASE db_001 from PUBLIC;2、#取消所有权限revoke all on database db_001 from public;3、取消用户默认创建public模式下表的权限revoke create on schema public from public;4、赋与连接库的权限grant connect on database db_001 to user_001;
5、赋与创建schema权限
grant create on database db_001 to user_001;
6、赋与创建表的权限
grant create on schema schema_001 to user_001;
7、赋与修改第6步创建的表的权限
grant usage on schema schema_001 to user_001;
8、单表授权
grant select on public.su_test to user_001;
9、授权查询所有表
GRANT SELECT ON ALL TABLES IN SCHEMA dba TO mobile;
10、下图是PG权限表

