1.postgresql.conf
将该文件中的listen_addresses项值设定为“*”,在9.0 Windows版中,该项配置已经是“*”无需修改。
2.pg_hba.conf
在该配置文件的host all all 127.0.0.1/32 md5行下添加以下配置,或者直接将这一行修改为以下配置
hostallall0.0.0.0/0md5
如果不希望允许所有IP远程访问,则可以将上述配置项中的0.0.0.0设定为特定的IP值。
Pg权限分为两部分,一部分是“系统权限”或者数据库用户的属性,可以授予role或user(两者区别在于login权限);一部分为数据库对象上的 *** 作权限。对超级用户不做权限检查,其它走acl。对于数据库对象,开始只有所有者和超级用户可以做任何 *** 作,其它走acl。在pg里,对acl模型做了简化,组和角色都是role,用户和角色的区别是角色没有login权限。可以用下面的命令创建和删除角色,CREATE ROLE nameDROP ROLE name为了方便,也可以在 shell 命令上直接调用程序 createuser 和 dropuser,这些工具对相应命令提供了封装:createuser namedropuser name数据库对象上的权限有:SELECT,INSERT, UPDATE,DELETE,RULE, REFERENCES,TRIGGER,CREATE, TEMPORARY,EXECUTE,和 USAGE等,具体见下面定义typedefuint32AclMode/* a bitmask of privilege bits */#define ACL_INSERT (1<<0) /* forrelations */#defineACL_SELECT (1<<1)#defineACL_UPDATE (1<<2)#defineACL_DELETE (1<<3)#defineACL_TRUNCATE (1<<4)#defineACL_REFERENCES (1<<5)#defineACL_TRIGGER (1<<6)#defineACL_EXECUTE (1<<7) /* for functions */#defineACL_USAGE (1<<8) /* for languages, namespaces, FDWs, and* servers */#defineACL_CREATE (1<<9) /* for namespaces and databases */#defineACL_CREATE_TEMP (1<<10) /* for databases */#defineACL_CONNECT (1<<11) /* for databases */#defineN_ACL_RIGHTS 12 /* 1plus the last 1<<x */#defineACL_NO_RIGHTS 0/*Currently, SELECT ... FOR UPDATE/FOR SHARE requires UPDATE privileges */#defineACL_SELECT_FOR_UPDATE ACL_UPDATE我们可以用特殊的名字 PUBLIC 把对象的权限赋予系统中的所有角色。 在权限声明的位置上写 ALL,表示把适用于该对象的所有权限都赋予目标角色。beigang=# grantall on schema csm_ca to publicGRANTbeigang=# revoke all on schema csm_ca frompublicREVOKEbeigang=#每种对象的all权限定义如下:/** Bitmasks defining "allrights" for each supported object type*/#defineACL_ALL_RIGHTS_COLUMN (ACL_INSERT|ACL_SELECT|ACL_UPDATE|ACL_REFERENCES)#defineACL_ALL_RIGHTS_RELATION (ACL_INSERT|ACL_SELECT|ACL_UPDATE|ACL_DELETE|ACL_TRUNCATE|ACL_REFERENCES|ACL_TRIGGER)#defineACL_ALL_RIGHTS_SEQUENCE (ACL_USAGE|ACL_SELECT|ACL_UPDATE)#defineACL_ALL_RIGHTS_DATABASE (ACL_CREATE|ACL_CREATE_TEMP|ACL_CONNECT)#define ACL_ALL_RIGHTS_FDW (ACL_USAGE)#defineACL_ALL_RIGHTS_FOREIGN_SERVER (ACL_USAGE)#defineACL_ALL_RIGHTS_FUNCTION (ACL_EXECUTE)#defineACL_ALL_RIGHTS_LANGUAGE (ACL_USAGE)#defineACL_ALL_RIGHTS_LARGEOBJECT (ACL_SELECT|ACL_UPDATE)#defineACL_ALL_RIGHTS_NAMESPACE (ACL_USAGE|ACL_CREATE)#defineACL_ALL_RIGHTS_TABLESPACE (ACL_CREATE)PostgreSQL怎么快速赋予权限欢迎分享,转载请注明来源:内存溢出
评论列表(0条)