¿Cuáles son los archivos clave para configurar PostgreSQL?
PostgreSQL es un sistema de bases de datos muy potente y flexible. Sin embargo, su configuración puede ser un desafío si no conocemos bien las herramientas adecuadas. Es crucial familiarizarse con tres archivos fundamentales que suelen ser la causa de problemas o soluciones al configurar PostgreSQL:
postgresql.conf
pg_hba.conf
pg_ident.conf
Estos archivos determinan el comportamiento de nuestro sistema de bases de datos y, cuando están correctamente configurados, pueden ahorrarnos muchos dolores de cabeza.
¿Cómo acceder a los archivos de configuración?
Para acceder a los archivos de configuración, no es necesario explorar manualmente todo el sistema operativo. Desde la consola de PostgreSQL o mediante herramientas como PGAdmin, podemos encontrar la ruta de estos archivos utilizando la función SHOW config_file; que nos indica dónde se ubican.
¿Qué contiene el archivo postgresql.conf?
Este archivo es esencial para la configuración de PostgreSQL, ya que contiene una serie de parámetros clave, como:
Configuración de memoria: Determina la cantidad de memoria que PostgreSQL puede utilizar.
Modos de operación: Permite configurar la base de datos para operar en modo maestro o standby.
Conexiones y autenticaciones: Gestiona las direcciones desde donde puede aceptarse la conexión y bajo qué condiciones.
Es importante familiarizarse con este archivo y sus comentarios, que explican con detalle cada parámetro. Esto nos ayudará a identificar y resolver problemas como el uso excesivo de CPU o falta de memoria.
¿Cómo configurar el archivo pg_hba.conf?
El archivo pg_hba.conf se encarga de definir los roles y tipos de acceso a la base de datos. Utiliza cinco columnas para configurar:
Fuente de la conexión
Acciones permitidas
Usuarios que pueden conectarse
Dirección de conexión
Método de autenticación
El manejo adecuado de este archivo es crucial, ya que un error podría bloquear incluso el acceso local a la base de datos. Por ejemplo, la línea de configuración:
# Tipo Base de datos Usuario Dirección Método
host all all 127.0.0.1/32 md5
Esta línea permite el acceso local a todas las bases de datos utilizando el método de autenticación MD5.
¿Qué función tiene el archivo pg_ident.conf?
El archivo pg_ident.conf permite mapear usuarios del sistema operativo a roles específicos dentro de PostgreSQL. Esto es especialmente útil en plataformas como Linux, donde los usuarios root o sudoers pueden tener permisos especiales. Por ejemplo, podemos mapear:
# Sistema PostgreSQL
admin master_user
Esto le indicaría a PostgreSQL que el usuario del sistema operativo admin tiene el rol master_user en la base de datos.
¿Qué debemos considerar al hacer cambios en la configuración?
Reiniciar la base de datos: Para que los cambios en los archivos de configuración surtan efecto, es necesario reiniciar el servicio de PostgreSQL.
Leer la documentación: Aunque se puede comenzar a desarrollar sin leer todos los archivos completamente, comprender cada parámetro nos prepara mejor para resolver cualquier problema potencial.
Seguridad: Es vital configurar correctamente los accesos y roles para proteger la base de datos de accesos no autorizados.
Con estos archivos y configuraciones, tienes el poder de optimizar PostgreSQL para satisfacer las necesidades específicas de tu aplicación. Explora, experimenta y mantén siempre la seguridad como una prioridad.
A través de la sentencia SHOW CONFIG se nos muestra donde están los archivos de configuración. En mi caso la ruta es:
/Library/PostgreSQL/12/data/postgresql.conf
Algo a tener en cuenta es que en la ruta por default de instalación no se puede acceder debido a falta de permisos. Para ingresar basta con un:
sudo cd /Library/PostgreSQL/12/data/
Postgresql.conf: Configuración general de postgres, múltiples opciones referentes a direcciones de conexión de entrada, memoria, cantidad de hilos de pocesamiento, replica, etc.
pg_hba.conf: Muestra los roles así como los tipos de acceso a la base de datos.
pg_ident.conf: Permite realizar el mapeo de usuarios. Permite definir roles a usuarios del sistema operativo donde se ejecuta postgres.
Quizás, para evitar dificultades a futuros estudiantes, corregir que no es SHOW CONFIG, sino show config_file;
Gracias por el resumen, Isay.
.
Postgres.conf
.
Lo mejor es leer todo el documento para saber que parámetros podemos modificar y la configuración actual. Si un valor está comentado con el símbolo de gato(#), significa que es el valor predeterminado. Si lo quiero cambiar hay que quitar el # para desconectarlo y modificarlo.
.
Importante: reiniciar el programa(base de datos), para aplicar los cambios.
.
Replicación en PostgreSQL
.
Uno de los métodos más usados para conseguir la Alta disponibilidad en nuestro servidor Postgres es implementar la Replicación. Con ello nos aseguramos que nuestro sistema esté activo el 99,9% del año. Replicas en "version and platform compatibility".
.
¿Qué es la Replicación?
.
Es la transmisión de información derivada de las operaciones DML de una Base de Datos a otra, es decir, se transmite a otra Base de Datos las instrucciones INSERT, UPDATE y DELETE que se realicen en una Base de datos de forma que ambas BBDD tengan la misma información, así pues, se obtiene una redundancia de datos.
.
Pg_hba.conf
.
Permite proteger las conexiones por roles. Muestra los roles y los tipos de acceso que tiene con la base de datos. Muestra y puede configurar:
.
|> Type <|> Database <|> User <|> Address <|> Method <|
...host ... . . . . All . . . . . . . All . . .127.0.0.1/32 . . . md5
.
Esta configuración permite todas las conexiones a todas las bases de datos locales dentro del equipo por md5.
.
MD5
.
El método md5 utiliza un mecanismo de desafío-respuesta personalizado menos seguro. Evita el rastreo de contraseñas y evita el almacenamiento de contraseñas en el servidor en texto sin formato, pero no brinda protección si un atacante logra robar el hash de la contraseña del servidor. Además, el algoritmo hash MD5 ya no se considera seguro contra determinados ataques.
.
El método md5 no se puede utilizar con la función db_user_namespace.
.
Para facilitar la transición del método md5 al método SCRAM más nuevo, si md5 se especifica como método en pg_hba.conf pero la contraseña del usuario en el servidor está encriptada para SCRAM (ver más abajo), entonces se elegirá automáticamente la autenticación basada en SCRAM. .
.
Replicación en PostgreSQL
.
Uno de los métodos más usados para conseguir la Alta disponibilidad en nuestro servidor Postgres es implementar la Replicación. Con ello nos aseguramos que nuestro sistema esté activo el 99,9% del año.
.
¿Qué es la Replicación?
.
Es la transmisión de información derivada de las operaciones DML de una Base de Datos a otra, es decir, se transmite a otra Base de Datos las instrucciones INSERT, UPDATE y DELETE que se realicen en una Base de datos de forma que ambas BBDD tengan la misma información, así pues, se obtiene una redundancia de datos.
.
Pg_ident.conf
.
Permite a Postgres decir que usuario local del Sistema Operativo corresponde a qué rol de la base de datos.
.
|> mapname <|> system-username <|> pg-username <|
Excelente información muchas gracias por compartirlo
Gracias por tu contribucion
Mi resumen:
Los archivos de configuración son tres principales:
postgreql.conf
pg.hba.conf
pg_ident.conf
La ruta de los mismos depende del sistema Operarivo, para saber que que ruta estan, basta con hacer una Query
SHOW config_file;
NOTA: siempre es bueno hacer una copia original de los archivos antes de modificarlos por si movemos algo que no.
Muestra la ruta de nuestros archivos de configuracion
SHOW config_file;
- postgresql.conf: Configuración general de postgres, múltiples opciones referentes a direcciones de conexión de entrada, memoria, cantidad de hilos de pocesamiento, replica, etc.
- pg_hba.conf: Muestra los roles así como los tipos de acceso a la base de datos.
- pg_ident.conf: Permite realizar el mapeo de usuarios. Permite definir roles a usuarios del sistema operativo donde se ejecuta postgres.
Había leído anteriormente que en el archivo pg_hba.conf se puede modificar la clave para entrar a la base de datos
@ch2angel
No la clave, sino el método de acceso
Para modificar la clave debes usar el comando \password dentro del Shell de Postgres
podría ser un curso entero de la pura configuración.
¡De acuerdo!
Esto es oro. :O
Totalmente
Si no tienes editor para mostrar archivos de texto plano, puedes descargar el que menciona el profe en el video: Visual Studio Code https://code.visualstudio.com/docs/?dv=win64user
Espero les sea útil
Muy interesante e importante
SHOW config_file;
/etc/postgresql/10/main/postgresql.conf
Mientras mas voy aprendiendo me doy cuenta que menos sé. :(
y eso da mucha ansiedad!
Lo máximo este curso ,falta casi 3 meses para que se acabe mi suscripción pero pagaré nuevamente porque PLATZI es una maravilla!!!
Espero sigas en Platzi
Para entrar a la carpeta data desde MacOS debes ir a \Library\Postgres**13** 13 hace referencia a la versión que tengas instalada
Luego haces clic derecho y te vas a Gea Info o Obtener Información
Agregas ahora tu usuario administrador para leer y escribir
Ahora estas listo para ingresar a hacer tu configuración
Gracias Jheron no daba como abrir la carpeta Data :)
Excelente… llevaba rato intentando acceder y era algo simple jejeje me ayudo tu comentario. Gracias.
En ubuntu se pueden acceder con estos comandos:
sudo vi /etc/postgresql/(version)/main/posgresql.conf
sudo vi /etc/postgresql/(version)/main/pg_hba.conf
sudo vi /etc/postgresql/(version)/main/pg_ident.conf
Graciaaaas❗ También funciona para usuarios de Windows Subsystem for Linux 💚
gracias, en mi caso están acá:
sudo ls -al /etc/postgresql/16/main
-rw-r--r-- 1 postgres postgres 143 Mar 12 23:41 pg_ctl.conf
-rw-r----- 1 postgres postgres 5924 Mar 12 23:41 pg_hba.conf
-rw-r----- 1 postgres postgres 2640 Mar 12 23:41 pg_ident.conf
-rw-r--r-- 1 postgres postgres 29959 Mar 12 23:41 postgresql.conf
```sudo ls -al /etc/postgresql/16/main
Si alguien esta intentando conectarse a una base de datos remota verifiquen que el firewall de linux permita la conexión. Ejecuten este comando para permitir las conexiones:
ufw allow 5432/tcp
¡Buen consejo, muchas gracias!
gran aporte !
suban la velocidad de reproducción a 1.25x
No me ha parecido necesario en este curso, hasta ahora ha habido mucha información útil. ¿Cómo te fue con el curso?
Es interesante cómo en PostgreSQL versión 11 (la de este vídeo) se usaba MD5 y ahora en la versión 13 (la que yo tengo) ahora usa SHA-256. Me imagino que es mucho más seguro.
En la 14.8 es scram-sha-256
en ves de tener "md5" tengo "scram-sha-256" cambia en algo? o es otro método de encriptación diferente?
Si, es otro método de encriptación diferente, más securo que MD5, hay dos cambios principales, cómo PostgreSQL no conoce el texto original de un texto ya encriptado, el usuario de la base de datos debe re ingresar el valor original para que sea encriptado con éste nuevo método (fué introducido en la versión 10),
El backend (php, python, node, net, java, etc...) que se conecte a postgresql para usar ésta función debe también poder soportar scram-sha-256 , si no lo soporta y debes hacer validaciones del lado del backend habrán problemas, por ejemplo cuando estas validando la clave de acceso de un usuario.
en mi caso (yo uso manjaro), tanto la carpeta data como el documento postgresql.conf se encontraban con permisos restringidos, por ende hubo otorgarle permisos con el comando chmod.
sino se hace esto no deja acceder a la carpeta ni abrir el documento.
No puedo acceder a carpeta DATA en Mac
ya pude la solución es la siguiente:
Para todos los que no puedan acceder a la carpeta DATA en MACOS La solución simple deben:
seleccionar la carpeta data y dar clic derecho
dar clic en obtener información
3.dar clic en el candado en la parte inferior derecha.
poner su contraseña.
ir al apartado de compartir y permisos.
seleccionar en postgress y everyone la opción: "leer y escribir"
listo ya pueden acceder a la carpeta data en Mac os.
Julian eres un crack no sabía qué hacer xD
si tengo postgresql en un entorno de docker, estas configuraciones son necesarias?
o hay versiones de docker que vienen ya engalladas por decirlo asi