database —> schema —> table
1.同一个实例下,不同database是不能相互访问的,即独立的。
2.同一个数据库,不同模式下的表是可以相互访问,即可共享的
3.不同模式下,表名可以是一样。也就是表在模式下是独立。
##授权某个库下的某个模式下有创建表的权限
grant create on database db_name to 'role_user';
grant create on schema sm_name to 'role_user';
类比理解:
- postgresql中的database,可以看作mysql的一个实例
- postgresql中的schema,可以看作mysql的database
- postgresql中的table,可以看作mysql的table
权限:
database ----> create schema, drop schema
schema ---->create table ,drop table
table ---->select update delete insert trigger references truncate
role <—> user
1.角色 —> database —> 属性(login,superuser,createdb,createrole,password)
2.角色 —> table —> 权限(select,insert,update,delete,truncate,trigger,references)
3.角色和用户的唯一区别就是默认创建时用户可以login,角色不能login
4.角色/用户组成员
pg_user:记录有login属性role/user信息
pg_roles:记录role信息
##将角色role_admin具有权限授权给user_test
grant role_admin to user_test;
revoke role_admin from user_test;
信息:
- 数据库:pg_database
- 模式:pg_namespace
- 表:pg_class