Configuración inicial necesaria después de la instalación de PostgreSQL en CentOS y antes de la puesta en marcha.


Fecha de publicación:17 de diciembre de 2020.



INFOMARTION > Configuración inicial necesaria después de la instalación de PostgreSQL en CentOS y antes de la puesta en marcha.

Resumen.

Este es el procedimiento de configuración inicial necesario para instalar e iniciar PostgreSQL en CentOS. La información se basa en el supuesto de que se utiliza CentOS7. También se incluye la sección de seguridad.

Se recomienda PostgreSQL por ser gratuito y muy funcional. He oído que las funciones de PostgreSQL solían ser lentas, pero las recientes han mejorado y son más rápidas.

Las versiones son las siguientes.

Versión de CentOS7.6 (1810)
Versión de PostgreSQL9.2.24

Índice de contenidos

  1. instalar
  2. Detalles de la configuración
  3. resumen

1. instalar

Esta sección describe el procedimiento para instalar PostgreSQL.

1-1. Instalación de PostgreSQL

Realice la instalación de PostgreSQL mediante el comando yum. Realiza el trabajo como usuario root.

[username@hostname ~]$ su -
[root@hostname ~]# yum -y install postgresql-server

2. Detalles de la configuración

Esta sección describe la configuración hasta el inicio de PostgreSQL.

2-1. Cree un usuario dedicado a PostgreSQL.

Quería crear un usuario dedicado para manipular PostgreSQL (usar comandos psql), pero el usuario ya estaba creado. Recuerdo haber creado usuarios en el pasado, así que quizás la especificación haya cambiado.

Intenta cambiar a un usuario con el siguiente comando.

[root@hostname ~]# su - postgres

Como es posible que algunas personas utilicen una versión más antigua de PostgreSQL, cabe mencionar que el procedimiento para configurar las variables de entorno cambiando el siguiente ".bashrc" ya no es necesario.

.bashrc


export PGHOME=/var/lib/pgsql
export PGDATA=/var/lib/pgsql/data
export PGHOST=localhost

El PGDATA por defecto para los usuarios de postgres parece ser ahora '/var/lib/pgsql/data'. Se describe como una referencia a "/usr/lib/systemd/system/postgresql.service".

2-2. Preparación de datos PostgreSQL

Crear datos PostgreSQL. La codificación es UNICODE. El directorio "/var/lib/pgsql/data" se ha creado por defecto, pero a los que no lo han hecho también se les pide que creen una carpeta.

-bash-4.2$ initdb --encoding=UNICODE

Como "PGDATA=/var/lib/pgsql/data" está configurado en "/usr/lib/systemd/system/postgresql.service", "initdb --encoding=UNICODE" construirá una BD bajo "/var/lib/pgsql/ data/", la BD se construye en "/var/lib/pgsql/data/".

2-3. Modificación del archivo de configuración

Permitir que las direcciones IP accedan a PostgreSQL. Configure el sistema para que se autentique con una contraseña para el acceso no local.

[root@hostname ~]# vi /var/lib/pgsql/data/postgresql.conf

Modifique 'postgresql.conf' como sigue.

postgresql.conf【Antes del cambio】


#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

#listen_addresses = 'localhost'         # what IP address(es) to listen on;

postgresql.conf【después del cambio】


#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = '*'         # what IP address(es) to listen on;

Además, como es una parte importante de la seguridad, si pones esta configuración, podrás acceder al sitio desde cualquier IP. Si la IP a la que se va a acceder es fija, indique la IP fija.

Esta configuración es necesaria cuando se inicia la sesión desde un servidor distinto al que está instalado PostgreSQL, por ejemplo, pgadmin. Esta configuración no es necesaria si se accede al servidor y se ejecuta el comando psql. (ya que la conexión se origina en él mismo (localhost))

Esta es una configuración de seguridad importante, así que minimiza el número de usuarios que pueden acceder a ella en la medida de lo posible.

A continuación, modifique 'pg_hba.conf'.

[root@hostname ~]# vi /var/lib/pgsql/data/pg_hba.conf

Añade la siguiente información al final del documento.

pg_hba.conf


#Autenticación de contraseña desde el exterior.
host    all             all             0.0.0.0/0            md5

Al incluir esta configuración, se requiere una contraseña cuando se conecta desde el exterior. Estas áreas pueden ser graves agujeros de seguridad si no se configuran o se configuran incorrectamente, así que por favor, configúrelas con el último cuidado.

2-4. control de arranque

Ahora que la preconfiguración está completa, compruebe que PostgreSQL se inicia. Dado que la base de datos se construyó como un usuario postgres, cambie al usuario postgres antes de comenzar.

[root@hostname ~]# su - postgres
-bash-4.2$ pg_ctl start

Una vez iniciado PostgreSQL con éxito, compruebe que el comando psql funciona sin problemas. Ejecute el comando psql como usuario de postgres.

-bash-4.2$ psql -l
                                         Database List
   Name    |  Owner   | Encoding         |  Collation Order   | Ctype(conversion operator) |      Access rights
-----------+----------+------------------+--------------------+----------------------------+-----------------------
 postgres  | postgres | UTF8             | ja_JP.UTF-8        | ja_JP.UTF-8                |
 template0 | postgres | UTF8             | ja_JP.UTF-8        | ja_JP.UTF-8                | =c/postgres          +
           |          |                  |                    |                            | postgres=CTc/postgres
 template1 | postgres | UTF8             | ja_JP.UTF-8        | ja_JP.UTF-8                | =c/postgres          +
           |          |                  |                    |                            | postgres=CTc/postgres
(3 lines)

Está bien si se devuelven los resultados anteriores.

2-5. Ajuste de la puesta en marcha automática

Aunque no es obligatorio, es difícil iniciar PostgreSQL cada vez que se reinicia el servidor, por lo que se configura para que PostgreSQL se inicie automáticamente cuando se inicie el servidor. También se registra al comando systemctl. Tenga en cuenta que este procedimiento es para CentOS7, por lo que si usted está usando cualquier otra cosa que no sea CentOS7, tendrá que utilizar el comando Service para hacer frente a esto.

Compruebe si '/usr/lib/systemd/system/postgresql.service' existe. Si no es así, cree 'postgresql.service' mediante el siguiente procedimiento. Ejecutar como usuario root.

[root@hostname ~]# touch /etc/systemd/system/postgresql.service
[root@hostname ~]# vi /etc/systemd/system/postgresql.service

Se proporciona la siguiente información.

postgresql.service


[Unit]
#Descripción.
Description=PostgreSQL
#Control previo y posterior a la ejecución.
#Before=xxx.service
After=network.target

[Service]
#Designación de usuarios y grupos
User=postgres
Group=postgres
#Una vez activada, establezca el estado en Activado.
Type=oneshot
RemainAfterExit=yes
#Arranque, parada y recarga.
Environment=PGDATA=/var/lib/pgsql/data
ExecStart=/usr/bin/pg_ctl start -D /var/lib/pgsql/data
ExecStop=/usr/bin/pg_ctl stop
ExecReload=/usr/bin/pg_ctl reload

[Install]
#Ajustes equivalentes al nivel de ejecución 3.
WantedBy=multi-user.target

A continuación, regístrese con el comando systemctl.

[root@hostname ~]# systemctl enable postgresql
[root@hostname ~]# systemctl is-enabled postgresql
enabled
[root@hostname ~]# systemctl list-unit-files --type=service | grep postgresql
postgresql.service                                enabled
[root@hostname ~]# systemctl daemon-reload

2-6. Añadir un usuario administrativo a PostgreSQL

Cree un usuario para ser usado dentro de la aplicación PostgreSQL, separado del usuario que opera PostgreSQL desde Linux. Este es el usuario cuando se opera con pgadmin, etc. Me gustaría cambiar la contraseña del usuario postgres que existe por defecto y utilizarlo.

Ejecute el siguiente comando como el usuario postgres.

-bash-4.2$ psql
postgres=# alter role postgres with password 'Contraseña (informática)';
postgres=# \q

※Introduzca la contraseña que desea establecer en el campo "Contraseña".

2-7. Perforación de cortafuegos

Permitir el acceso al puerto de PostgreSQL porque el firewall (iptables para CentOS6 y anteriores) sólo permite el acceso ssh por defecto en CentOS7. Añade también la opción "permanente" para que la configuración sea permanente.

[root@hostname ~]# firewall-cmd --permanent --zone=public --add-port=5432/tcp
[root@hostname ~]# firewall-cmd --reload
[root@hostname ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client http https ssh
  ports: 8080/tcp 5432/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Si dice "puertos: 5432/tcp", está bien.

Acceso a través de pgadmin. Debería poder iniciar la sesión como usuario de Postgres con la contraseña que acaba de establecer.

3. resumen

Hemos descrito la configuración inicial necesaria cuando se instala PostgreSQL. La construcción inicial de PostgreSQL puede ser una lucha, así que por favor refiérase a esta sección.

Gracias por mirar hasta el final.