Curso de PostgreSQL

Curso de PostgreSQL

Oswaldo Rodríguez González

Oswaldo Rodríguez González

Archivos de Configuración

6/32
Recursos
Transcripción

Aportes 77

Preguntas 17

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Resumen de archivos de configuración.

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.

Compañeros lean esta información para complementar esta clase, asi es mucho más entendible el tema. Es una lectura corta.

https://e-mc2.net/es/configuracion-basica-de-postgresql

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.

Archivos Configuracion
- postgresql.conf
- pg_hba.conf
- pg_ident.conf

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.


.

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 <|

Muy interesante e importante

SHOW config_file;

/etc/postgresql/10/main/postgresql.conf

Esto es oro. 😮

podría ser un curso entero de la pura configuración.

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

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

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

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

suban la velocidad de reproducción a 1.25x

# ---------------------------
# Archivos de configuración
# ---------------------------

/*
  postgresql.conf => Configura el motor de base de datos

*/
/*
  pg_hba.conf => muestra los roles y los tipos de acceso a la base de datos
		 fuente de la conexión
		 base de datos
		 usuario
		 dirección
		 método de encriptación (si cambiamos a trust se conectará sin contraseña)
*/
/*
pg_ident.conf => nos permite mapear usuarios, el usuario root o superadmin etc se correlaciona el nombre del usuario con el rol  y e rol del la base de datos
		
*/
/*
SHOW config_file => nos muestra la ruta de acceso;
*/```

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 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.

Estimados,

una consulta, ¿como podria configurar los archivos pg_hba.conf y/o postgres.conf para poder hacer que la autenticación de los usuarios sea Windows Authentication?

La sentencia show config_file; se nos muestra donde están los archivos de configuración. postgresql.conf pg_hba.conf y pg_ident.conf Estos archivos van a ser el 99% de nuestros problemas si están mal configurados o las respuestas a nuestros problemas si quedan bien configurados desde el principio.

postgresql.conf Configuración general de Postgres, opciones a direcciones de conexión, cantidad de hilos de procesamiento, configurar el modo replica de la base de datos, valores predeterminados que tomó la base de datos, etc.

pg_hba.conf Son 5 columnas que muestran, la fuente de conexión, que acciones puede hacer, que usuarios pueden conectarse, la dirección desde la que se esta conectando, y el método de la conexión. Si configuramos mal este archivo ni nosotros mismos podremos conectarnos 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.

si tengo postgresql en un entorno de docker, estas configuraciones son necesarias?
o hay versiones de docker que vienen ya engalladas por decirlo asi

Excellente explicacion… mas claro imposible

Acceder a postgresql.conf con un editor de código, este archivo de configuración es el más importante.

Postgres tiene un comando para mostrar la ruta de los archivos de configuracion

postgres=# show config_file ;
               config_file               
-----------------------------------------
 /etc/postgresql/11/main/postgresql.conf
(1 row)

<h5>postgresql.conf</h5>
  • Muestra todas las configuraciones, si estan comentados no quiere decir que no este tomando la configuracion, quiere decir que va a tomar los valores predeterminados.
  • Para que los cambios srugan efecto se tiene que reiniciar el servicio de la base de datos.
  • Se encuentra la configuracion de las replicas.
<h5>pg_hba.conf</h5>
  • Muestra los roles y el tipo de acceso que tienen a la base de datos.
  • Consisiste de 5 Columnas
  • La fuente de la conexion, que acciones puede hacer, que usuarios puede conectarse, desde donde se esta conectado, el metodo de autentificacion.
# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5

MD5 en un algoritmo de cifrado

Es recomendable leer toda la documentacion de los archivos para tener un mayor entendimiento de los permisos y restricciones que podemos configurar

yo usaba esta pagina: https://pgtune.leopard.in.ua/ para obtener algunas configuraciones solo pasandole los parametros que ya tenia (ram, cpu, entre otras)

Aquí encontraremos los 3 archivos de configuración que menciona el profesor: C:\Program Files\PostgreSQL\14\data

Archivo pg_ident.conf

Archivo Pg_hba.conf

Archivo Postgresql.conf

¿Cómo encontrar los archivos?

Importancia de los archivos

Excelente clase.

No puedo acceder a carpeta DATA en Mac

Información resumida de esta clase
#EstudiantesDePlatzi

  • Existen 3 archivos que debemos saber configurar para evitarnos problemas

  • Una buena recomendación es leernos el archivo postgresql.conf y tratar de entenderlo

  • Las bases de datos toman los cambios en un inicio y no mientras se están ejecutando

  • El archivo pg_hba.conf permite configurar permisos para protegernos

  • El archivo pg_ident.conf nos permite mapear usuario y tener un buen nivel de seguridad

ERROR: debe ser superusuario o miembro del rol pg_read_all settings para examinar «config_file»
SQL state: 42501

No lo puedo solucionar.

Los 3 archivos de configuración más importantes en POSTRES son : postgresql.conf, pg_hba.conf y pg_ident.conf.
Para saber su path ejecutar esta sentencia sql en pgadmin: SHOW config_file.

  • postgresql.conf: es el más importante y complejo de entender. Este archivo básicamente es una serie de parámetro/valor en donde va a estar toda la configuración de postgres. Los hilos que va a usar, la memoria disponible. Si está en modo master o stand by.
  • pg_hba.conf: este archivo es mucho más sencillo. Muestra los roles y los tipos de acceso que tienen a tu DB. La documentación tiene que ver con la autenticación y te explica los métodos, los tipos de usuarios, las fuentes, etc.
  • pg_ident.conf: este archivo nos permite mapear usuarios.

que alivio si entender😄da mas animo de seguir el curso

pg_hba.conf: Este fichero se utiliza para definir los diferentes tipos de accesos que un usuario tiene en el cluster.
pg_ident.conf: Este fichero se utiliza para definir la información necesaria en el caso que utilicemos un acceso del tipo ident en pg_hba.conf .
postgresql.conf: En este fichero podemos cambiar todos los parametros de configuracion que afectan al funcionamiento y al comportamiento de PostgreSQL en nuestra maquina.

Para quienes usan Linux, los archivos de configuración estan en esta ruta:
/etc/postgresql/13/main

En mi caso tengo la versión 13 que ya es LTS, el 12 fue LTS en el momento de lanzar este curso que fue hace como en el 2018 o 19

listen_addresses se usa para definir en que dirección IP escucha el servidor, no desde cual escucha. Es decir, si el servidor tiene varias IPs se puede configurar por cual de éstas escucha.

https://www.postgresql.org/docs/9.1/runtime-config-connection.html

While client authentication (Chapter 19) allows fine-grained control over who can access the server, listen_addresses controls which interfaces accept connection attempts

excelente teoria para iniciar con este motor de bases de datos excelente aprendizaje

Les comparto lo que dice en el archivo postgresql.conf, muy importante para el renicio de nuestras configuraciones:

This file is read on server startup and when the server receives a SIGHUP
signal. If you edit the file on a running system, you have to SIGHUP the
server for the changes to take effect, run “pg_ctl reload”, or execute
"SELECT pg_reload_conf()". Some parameters, which are marked below,
require a server shutdown and restart to
take effect.

Este archivo es leido al momento en que el servidor arranca y cuando el servidor recibe un señal de SIGHUP. Si tu editas el archivo, cuando el sistema está corriendo (cuando postgres está funcionando), tienes que reiniciar el servidor para que los cambios tengan efectos, puedes correr: “pg_ctl reload” o ejecutar “SELECT pg_reload_conf()”, algunos parámetros, los cuales son marcados si necesitan que se apague el server y restaurarlo para que tengan efecto.

Si quiero lograr ir a Singapur, Me debo conocer como la palma de mi mano (inmediatamente me miré las palmas de las manos xd), los archivos de configuración y el funcionamiento interno del motor de bases de datos.

el principal archivo .conf, va a ser lo más habitual para los desarrolladores BackEnd, debido a los diferentes registros que podemos llevar acabo en el archivo, como cuáles son las Querys más lentas o configurar la base de datos en modo réplica.

Los archivos que tenemos que configurar son: postgresql.conf, pg_hba.conf, pg_ident.conf

Por si quieren buscar los archivos en linux Centos /Redhat (la version cambia la ruta),
cd /var/lib/pgsql/9.4/data/

o también:
find -name 'pg_hba.conf’
find -name 'postgresql.conf’
find -name ‘pg_ident.conf’

Principales archivos que se deben de configurar:
postgresql.conf
pg_hba.conf
pg_ident.conf

Genial todo esta en esos archivos

Interesante

Existen tres archivos importantes para realizar configuraciones extras y también corregir el 99 % de los errores en nuestro motor de bases de datos cuando queremos agregar servicios y son: 1.postgresql.conf, 2.pg_hba.conf, 3.pg_iden.conf

SHOW config_file; Con la anterior sentencia podemos ver la ruta de los archivos de configuración de postgres

postgresql.conf: En este fichero podemos cambiar los parámetros de PostgreSQL por ejemplo en la sección Connection Settings se cambia las conexiones máxima, el socket cuales IP le podemos dar acceso. Este un archivo que básicamente se rige por para =valor

Todos los valores comentados en los archivos son los valores por defectos, para cambiar los valores se debe descomentar y cambiar el valor. También hay que tener en cuanta que la bases de datos toma en cuenta estos valores solo en el siguiente reinicio.

En METHOD = trust, esto sirve para que los usuarios desde cierto pool de ip no tenga que autenticarse.

En METHOD = deny sirve para denegar a una ip específica o servicio que se deniega el acceso. Esto es muy funcional para un servicio maligno.

Hola ¿Alguien sabe que tipo de lenguaje son los archivos config? Es que estoy abriéndolo con Atom.

pg_ident.conf: Específicamente esto nos sirve para mapear usuarios. Esto es funcional para darle permisos a una cuenta local de equipo permisos de administrador

Por seguridad solo se debe dejar acceso a todos los usuarios desde el localhost, cuando este en producción seria mejor restringir todos los accesos.

Vaya! esto es muy importante

En mac no puedo abrir la carpeta “data”, me dice que no tengo permiso para hacerlo.

LOL 🤯

la consulta "show config_file; " (No es una consulta de SqL no?)

Ficheros de configuración en Ubuntu:
show config_file; (Desde postgres)
-> Muestra el path del fichero postgresql.conf

Resto de ficheros de configuración (pg_hba.conf y pg_ident.conf):
-> Se encuentran en el mismo path que postgresql.conf

Archivos de configuración

Para conocer la ruta de los archivos de configuración: SHOW config_file;

Acceder a los archivos de configuración en tu carpeta de archivos del ordenador.

pg_hba.conf: muestra roles y tipos de acceso a la base de datos.

pg_ident.conf: nos permite mapear usuarios

¿Qué son las replicas?

descomentas los valores que hay en el .conf para cambiarlos.

Podemos cambiar desde los hilos, la memoria disponible o si está en modo master o stand by

Dentro del archivo de postgresql.conf, tenemos las diferentes configuraciones que tiene postrges para ciertas acciones, de las que podemos hacer uso para alterar el comportamiento de postgresql. A lo largo del archivo, podemos ver que hay varias líneas que empiezan con #, que son las líneas comentadas. En el archivo podemos ver parámetros junto con un valor, el cuál tenemos que modificar si queremos hacer algo en específico.

SHOW config_file; para mostrar la ruta de los archivos de configuración.

Si no configuramos bien los tres archivos mencionados, podemos tener dolores de cabeza a la hora de agregar funcionalidades o servicios especiales.

Excelente!

Yo uso md5 para guardar contraseñas en la BD. Tiene un tamaño de 32 caracteres, por lo que se debería dar ese tamaño al declarar la variable, para que así no ocupe más espacio del necesario.