objects - postgresql grant execute on function
Postgresql: el error "debe ser propietario de la relaciĆ³n" al cambiar un objeto propietario (2)
¿Cuál es la opción / truco de
grant
debo dar al usuario actual ("
usuarioA
") para permitirle cambiar el propietario de un objeto que pertenece a otro usuario ("
usuarioC
")?
Más precisamente, la tabla de contactos es propiedad del usuario C y cuando realizo la siguiente consulta para cambiar el propietario al usuario B , conectado con el usuario A :
alter table contact owner to userB;
Me sale este error:
ERROR: must be owner of relation contact
Pero el usuario A tiene todos los derechos necesarios para hacerlo normalmente (la opción de concesión " crear en esquema " debería ser suficiente):
grant select,insert,update,delete on all tables in schema public to userA;
grant select,usage,update on all sequences in schema public to userA;
grant execute on all functions in schema public to userA;
grant references, trigger on all tables in schema public to userA;
grant create on schema public to userA;
grant usage on schema public to userA;
Gracias
Salida de línea de comando:
root@server:~# psql -U userA myDatabase
myDataBase=>/dt contact
List of relations
Schema | Name | Type | Owner
-------+---------+----------+---------
public | contact | table | userC
(1 row)
myDataBase=>
myDataBase=>alter table contact owner to userB;
ERROR: must be owner of relation public.contact
myDataBase=>
Del buen manual .
Debe ser propietario de la tabla para usar ALTER TABLE.
O ser un superusuario de bases de datos.
ERROR: debe ser propietario del contacto de relación
Los mensajes de error de PostgreSQL generalmente son correctos. Este es perfecto.
Gracias al comentario de Mike, volví a leer el documento y me di cuenta de que mi usuario actual (es decir, el usuario A que ya tiene el privilegio de crear ) no era un miembro directo / indirecto del nuevo rol propietario ...
Entonces la solución fue bastante simple: acabo de hacer esta concesión:
grant userB to userA;
Eso es todo amigos ;-)
Actualizar:
Otro requisito es que el objeto debe ser propiedad del usuario usuario A antes de modificarlo ...