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.

Añadiendo un Usuario a una Base de Datos ya Creada – Otorgar Acceso de Lectura Completo

He estado atascado en este problema durante un tiempo y no puedo resolverlo. Espero que alguien pueda ayudarme.

Creo que mi situación es bastante simple, así que me siento aún más estúpido por tener que publicar esto. Sin embargo, tengo una base de datos, llamémosla tempdb, que fue creada por el usuario ikaros en Postgres 13.3 (Ubuntu 13.3-1.pgdg16.04+1).

Aquí está la salida de \l+ con información no relevante omitida.

                                                                          List of databases
         Name          |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   |  Size   | Tablespace |                Description
-----------------------+----------+----------+-------------+-------------+-----------------------+---------+------------+--------------------------------------------
 ...
 ikaros                | ikaros   | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                       | 8029 kB | pg_default |
 tempdb                | ikaros   | UTF8     | C           | C           | =T/ikaros            +| 13 GB   | pg_default |
                       |          |          |             |             | ikaros=CTc/ikaros    +|         |            |
                       |          |          |             |             | johndoe=CTc/ikaros    |         |            |
...

Actualmente, johndoe puede conectarse a la base de datos tempdb, pero al ejecutar una consulta, recibe un mensaje que indica que no tiene suficientes privilegios a nivel de tabla. Error: No se puede ejecutar la consulta: Error fatal; Razón: Error: (ERROR: permiso denegado para la tabla settings).

Quiero que johndoe tenga privilegios de lectura completos en tempdb, junto con todas las tablas en su interior. ¿Cómo puedo hacer eso? ¡Gracias de antemano!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para otorgar todos los privilegios de lectura a johndoe en la base de datos tempdb y todas sus tablas, puedes seguir estos pasos:

    1. Conéctate a la base de datos tempdb como usuario superusuario, por ejemplo, ikaros:
      $ sudo -u postgres psql tempdb
      
    2. Otorga el privilegio SELECT a johndoe en todas las tablas de tempdb:
      GRANT SELECT ON ALL TABLES IN SCHEMA public TO johndoe;
      

      Esto otorga a johndoe la capacidad de leer todas las tablas en el esquema public de tempdb. Si tu base de datos tiene otros esquemas con tablas que johndoe necesita leer, debes ajustar este comando en consecuencia.

    3. Confirma los cambios:

      COMMIT;
      

    4. Verifica que johndoe ahora tenga los privilegios requeridos conectándote a tempdb como johndoe y ejecutando una consulta:
      $ psql -U johndoe -d tempdb
      tempdb=> SELECT * FROM some_table;
      

      Esto debería ejecutarse ahora sin errores.

Comments are closed.