Esta sección fue analizado por especialistas para que tengas la seguridad de la veracidad de nuestro post.
Solución:
Desde PostgreSQL 8.2 tienes que usar:
GRANT USAGE, SELECT ON SEQUENCE cities_id_seq TO www;
GRANT USAGE: para secuencias, este privilegio permite el uso de las funciones currval y nextval.
Además, como lo señaló @epic_fil en los comentarios, puede otorgar permisos a todas las secuencias en el esquema con:
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO www;
Dado que @Phil tiene un comentario que recibe muchos votos a favor que podrían pasar desapercibidos, estoy usando su sintaxis para agregar una respuesta que otorgará permisos a un usuario para todas las secuencias en un esquema (suponiendo que su esquema sea el ‘público’ predeterminado )
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public to www;
@Tom_Gerken, @epic_fil y @kupson tienen bastante razón con sus declaraciones para dar permisos para trabajar con secuencias existentes. Sin embargo, el usuario NO obtendrá derechos de acceso a secuencias creadas en el futuro. Para hacer eso, debe combinar la declaración GRANT con una declaración ALTER DEFAULT PRIVILEGES, así:
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO www;
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT USAGE, SELECT ON SEQUENCES TO www;
Esto solo funciona en PostgreSQL 9+, por supuesto.
Esto se agregará a los privilegios predeterminados existentes, no los sobrescribirá, por lo que es bastante seguro en ese sentido.
Aquí puedes ver las reseñas y valoraciones de los usuarios
Tienes la posibilidad recomendar esta división si te fue útil.