Herramientas de usuario

Herramientas del sitio


postgresql_pgadmin

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
postgresql_pgadmin [2025/10/11 17:42] – [Variables de entorno] romixpostgresql_pgadmin [2025/10/15 21:10] (actual) romix
Línea 1: Línea 1:
-===== PostgreSQL y pgAdmin =====+====== PostgreSQL y pgAdmin ======
  
 **PostgreSQL** es un sistema de gestión de bases de datos relacional, robusto y de código abierto, ampliamente utilizado para almacenar y administrar datos de forma segura y eficiente.   **PostgreSQL** es un sistema de gestión de bases de datos relacional, robusto y de código abierto, ampliamente utilizado para almacenar y administrar datos de forma segura y eficiente.  
Línea 8: Línea 8:
 ---- ----
  
-==== Archivo docker-compose.yml ====+====docker-compose.yml =====
  
 El servicio de base de datos y su entorno de administración se definen en el siguiente archivo **docker-compose.yml**: El servicio de base de datos y su entorno de administración se definen en el siguiente archivo **docker-compose.yml**:
  
-<code bash>+<code yaml>
 services: services:
   pgadmin4:   pgadmin4:
Línea 103: Línea 103:
  
 </code> </code>
 +Esto permite mantener las contraseñas, usuarios y configuraciones fuera del archivo //docker-compose.yml//, evitando exponer información sensible y facilitando cambios sin modificar el compose directamente.
 ---- ----
  
-==== Configuración init.sh ==== +==== Configuración init-db.sh ====
- +
-El archivo **init.sh** se ejecuta automáticamente la primera vez que se levanta el contenedor de PostgreSQL.   +
-Su función es crear la base de datos inicial, asignar permisos y preparar el entorno para su uso por parte de otros servicios (como Nextcloud o Grafana).+
  
 +El archivo **init-db.sh** se ejecuta automáticamente la primera vez que se levanta el contenedor de PostgreSQL.  
 +Su función es crear la base de datos inicial, asignar permisos y preparar el entorno para su uso por parte de otros servicios (como Nextcloud o Grafana).  
 +El código es el siguiente: 
 <code bash> <code bash>
 #!/bin/bash #!/bin/bash
 +set -e
 +
 +# Espera a que PostgreSQL arranque completamente
 +until pg_isready -U "$POSTGRES_USER"; do
 +  >&2 echo "Postgres está arrancando..."
 +  sleep 1
 +done
 +
 +# Crear bases de datos y usuarios
 +psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "postgres" <<-EOSQL
 +  -- Crear bases de datos
 +  CREATE DATABASE nextcloud;
 +  CREATE DATABASE grafana;
 +
 +  -- Crear usuarios con contraseñas
 +  CREATE USER unextcloud WITH ENCRYPTED PASSWORD 'cometa21beta';
 +  CREATE USER ugrafana WITH ENCRYPTED PASSWORD 'comuna11gamma';
 +
 +  -- Otorgar todos los privilegios sobre las bases de datos a los usuarios correspondientes
 +  GRANT ALL PRIVILEGES ON DATABASE nextcloud TO unextcloud;
 +  GRANT ALL PRIVILEGES ON DATABASE grafana TO ugrafana;
 +
 +  -- Otorga privilegios adicionales en el esquema público
 +  -- Les da permiso para acceder al esquema public, pero no para crear objetos todavía
 +  GRANT USAGE ON SCHEMA public TO unextcloud, ugrafana;
 +
 +  -- Permite que esos usuarios puedan crear objetos dentro del esquema public
 +  GRANT CREATE ON SCHEMA public TO unextcloud, ugrafana;
 +
 +  -- Le otorga a unextcloud todos los permisos sobre el esquema
 +  GRANT ALL PRIVILEGES ON SCHEMA public TO unextcloud;
 +
 +  -- Permisos sobre todas las tablas existentes dentro del esquema public
 +  GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO unextcloud;
 +
 +  -- Permisos sobre secuencias (autoincrementos)
 +  GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO unextcloud;
 +
 +  -- Define los privilegios por defecto para nuevas tablas en el esquema public
 +  ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO unextcloud;
 +EOSQL
 +
  
 </code> </code>
Línea 118: Línea 160:
 De esta manera, las bases de datos **nextcloud** y **grafana** se crean automáticamente y quedan listas para ser utilizadas en el arranque inicial del contenedor. De esta manera, las bases de datos **nextcloud** y **grafana** se crean automáticamente y quedan listas para ser utilizadas en el arranque inicial del contenedor.
  
 +----
 +
 +==== Configuración de conexión ====
 +Para conectar automáticamente el servicio de **PostgreSQL** con **pgAdmin4**, se utiliza el archivo //servers.json//. Este archivo contiene la configuración necesaria para que pgAdmin se conecte al servidor de base de datos de manera **automática** al iniciarse, evitando tener que configurar la conexión manualmente:
 +
 +<code yaml>{
 + "Servers": {
 +  "1": {
 +   "Name": "DBDockers",
 +   "Group": "Servers",
 +   "Host": "postgres",
 +   "Port": 5432,
 +   "MaintenanceDB": "NOMBRE_DB",
 +   "Username": "USUARIO_DB",
 +   "Password": "PASSWORD_DB",
 +   "SSLMode": "prefer"
 +   }
 + }
 +}
 +</code>
 ---- ----
  
Línea 123: Línea 185:
  
 Una vez desplegado el contenedor, **pgAdmin** queda accesible desde el navegador en la siguiente URL: Una vez desplegado el contenedor, **pgAdmin** queda accesible desde el navegador en la siguiente URL:
 +<code>http://<IP_PRIVADA>:9002</code>
  
 +Al ingresar, iniciamos sesión con nuestro usuario correspondiente (de la base de datos como nuestro usuario de pgAdmin). Desde allí, tendremos acceso completo a las bases de datos previamente creadas mediante el script **init-db.sh**.
postgresql_pgadmin.1760204524.txt.gz · Última modificación: por romix