es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Postgres: Obtener propietario de todos los esquemas

Quiero averiguar quién es el propietario de mi esquema de base de datos de postgres. Intenté:

select * from information_schema.schemata s order by schema_name

Pero cuando uso un cliente de base de datos visual para nuestra base de datos de postgres, parece haber más esquemas de los resultados de la consulta anterior. ¿Cómo puedo ver los propietarios de estas tablas ‘ocultas’? Sospecho que tiene algo que ver con el propietario del esquema que no otorga permisos a otros para ver el esquema, pero simplemente no puedo entenderlo.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para averiguar el propietario de un esquema de base de datos de postgres, puede utilizar la siguiente consulta:

    SELECT n.nspname as nombre_esquema, u.usename as propietario_esquema
    FROM pg_namespace n JOIN pg_user u ON n.nspowner = u.usesysid
    WHERE n.nspname = 'nombre_del_esquema_aqui';
    

    Esta consulta devolverá el nombre del esquema y el nombre de usuario del propietario.

    Si estás viendo más esquemas en el cliente visual de la base de datos que en la consulta, puede ser porque el cliente te muestra más esquemas de los que aparecen en la vista information_schema.schemata. Para ver todos los esquemas en la base de datos, puedes utilizar la siguiente consulta:

    SELECT n.nspname as nombre_esquema, u.usename as propietario_esquema
    FROM pg_namespace n JOIN pg_user u ON n.nspowner = u.usesysid
    ORDER BY n.nspname;
    

    Esta consulta devolverá todos los esquemas en la base de datos y sus propietarios.

    Si sospechas que el propietario de un esquema no está otorgando el privilegio a otros para verlo, puedes verificar los permisos utilizando la siguiente consulta:

    SELECT schemaname, table_name, table_type, has_select_privilege
    FROM information_schema.role_table_grants
    WHERE grantee = 'tu_nombre_de_usuario_aqui';
    

    Esta consulta te mostrará las tablas y esquemas en los cuales tienes privilegio de selección. Si un esquema no aparece en la lista, significa que no tienes permiso para verlo. Puedes pedir al propietario del esquema que te otorgue los privilegios necesarios.

Comments are closed.