Obtener permisos públicos para el shell de la base de datos PostgreSQL
Los roles se pueden crear y eliminar con los siguientes comandos:
Crear nombre de rol;
Eliminar nombre de rol;
Para mayor comodidad, También puede llamar a los programas createuser y dropuser directamente en el comando de shell, que proporcionan encapsulación de los comandos correspondientes.
createuser name
dropuser name
Los permisos para los objetos de la base de datos incluyen SELECCIONAR, INSERTAR, ACTUALIZAR, ELIMINAR, REGLA, REFERENCIAS, DISPARAR, CREAR, TEMPORAL, EJECUTAR y USUARIO. EXECUTE y USAGE, etc. se definen de la siguiente manera
typedefuint32AclMode; /* Máscara de bits de bits privilegiados*/
#define ACL_INSERT (1lt; lt; 0) /* Para relaciones* /
#defineACL_SELECT (1lt;lt;1)
#defineACL_UPDATE (1lt;lt;2)
#defineACL_DELETE (1lt;lt;3)
p>
#defineACL_ TRUNCATE (1lt;lt;4)
#defineACL_REFERENCES (1lt;lt;5)
#defineACL_TRIGGER (1lt;lt ;6)
#defineACL_EXECUTE (1lt;lt;7)
#defineACL_EXECUTE (1lt;lt;7) /* para funciónlt;7)/* para función*/ p>
#defineACL_USAGE (1lt; lt; 8) /* Para idioma, espacio de nombres, FDW y
* servidores*/
#defineACL_ CREATE (1lt; lt; 9 ) /* Para espacios de nombres y bases de datos*/
#defineACL_CREATE_TEMP (1lt;lt;10) /* Para bases de datos*/
#defineACL_CONNECT (1lt;lt;11) / * para base de datos */
#defineN_ACL_RIGHTS 12 /* 1 más el último 1lt;lt;x */
#defineACL_NO_RIGHTS 0
/* Actualmente, SELECT .FOR ACTUALIZAR/FOR SHARE requiere permisos ACTUALIZAR*/
#defineACL_SELECT_FOR_UPDATE ACL_UPDATE
Podemos usar el nombre especial PUBLIC para otorgar permisos de objetos a todos los roles en el sistema. Escribir TODOS en la declaración de permisos significa que todos los permisos aplicables al objeto se otorgan al rol de destino.
beigang=# otorgar todo el esquema csm_ca al público;
GRANT
beigang=# revocar todo el esquema csm_ca del público;
REVOKE
beigang=#
Todos los permisos para cada objeto se definen de la siguiente manera:
/*
* para cada tipo de objeto admitido Máscara de bits que define "allrights"
*/
#defineACL_ ALL_RIGHTS_COLUMN (ACL_INSERT|ACL_SELECT|ACL_UPDATE|ACL_REFERENCES)
#defineACL_ ALL_RIGHTS_RELATION (ACL_INSERT|ACL_SELECT |ACL_UPDATE| ACL_DUPDATE|ACL_DELETE|ACL_TRUNCATE|ACL_REFERENCES|ACL_TRIGGER)
#defineACL_ALL_RIGHTS_SEQUENCE(ACL_USAGE|ACL_SELECT|ACL_UPDATE)
#defineACL_ALL_RIGHTS_SEQUENCE (ACL_USAGE|ACL_SEL ECT|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_FUNC TION (ACL_EXECU TE) p >
#defineacl_all_rights_function (acl_exeCute)
#defineacl_all_rights_function (acl_execute) lenguaje (acl_usage)
#defineaCl_all_rights_largeObject (acl_select | acl_update)
Ace ( ACL_USAGE |ACL_CREATE)#defineACL_ALL_RIGHTS_TABLESPACE (ACL_CREATE)