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 CentOS | 7.6 (1810) |
---|---|
Versión de PostgreSQL | 9.2.24 |
Índice de contenidos
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.
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.
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
#listen_addresses = 'localhost' # what IP address(es) to listen on;
#------------------------------------------------------------------------------
# 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.
#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.
[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.
■INFORMATION
Haga clic aquí para ir a la página superior de INFORMACIÓN.
■PROFILE
Haga clic aquí para ver su perfil.
■Datos de contacto.
Para consultas sobre el artículo, póngase en contacto con nosotros aquí.