Configuration initiale requise après l'installation de PostgreSQL sur CentOS et avant le démarrage.


Date de publication:17 décembre 2020.



INFOMARTION > Configuration initiale requise après l'installation de PostgreSQL sur CentOS et avant le démarrage.

Vue d'ensemble.

Il s'agit de la procédure de configuration initiale requise pour installer et démarrer PostgreSQL sur CentOS. Les informations sont basées sur l'hypothèse que CentOS7 est utilisé. La section sur la sécurité est également incluse.

PostgreSQL est recommandé car il est gratuit et très fonctionnel. J'ai entendu dire que les fonctions PostgreSQL étaient autrefois lentes, mais que les fonctions récentes se sont améliorées et sont plus rapides.

Les versions sont les suivantes.

Version de CentOS7.6 (1810)
Version de PostgreSQL9.2.24

Table des matières

  1. installer
  2. Détails de la configuration
  3. résumé

1. installer

Cette section décrit la procédure d'installation de PostgreSQL.

1-1. Installation de PostgreSQL

Effectuez l'installation de PostgreSQL au moyen de la commande yum. Effectuez le travail en tant qu'utilisateur root.

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

2. Détails de la configuration

Cette section décrit la configuration jusqu'au démarrage de PostgreSQL.

2-1. Créez un utilisateur PostgreSQL dédié.

Je voulais créer un utilisateur dédié pour manipuler PostgreSQL (utiliser les commandes psql), mais l'utilisateur avait déjà été créé. Je me souviens avoir créé des utilisateurs dans le passé, donc peut-être que la spécification a changé.

Essayez de passer à un utilisateur avec la commande suivante.

[root@hostname ~]# su - postgres

Comme certaines personnes utilisent peut-être une ancienne version de PostgreSQL, il convient de mentionner que la procédure de définition des variables d'environnement en modifiant le fichier ".bashrc" suivant n'est plus nécessaire.

.bashrc


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

Le PGDATA par défaut pour les utilisateurs de postgres semble maintenant être '/var/lib/pgsql/data'. Il est décrit comme faisant référence à "/usr/lib/systemd/system/postgresql.service".

2-2. Préparation des données PostgreSQL

Créer des données PostgreSQL. L'encodage est UNICODE. Le répertoire "/var/lib/pgsql/data" a été créé par défaut, mais ceux qui ne l'ont pas fait sont également invités à créer un dossier.

-bash-4.2$ initdb --encoding=UNICODE

Comme "PGDATA=/var/lib/pgsql/data" est défini dans "/usr/lib/systemd/system/postgresql.service", "initdb --encoding=UNICODE" construira une BD sous "/var/lib/pgsql/". data/", la BD est construite sous "/var/lib/pgsql/data/".

2-3. Modifier le fichier de configuration

Autoriser les adresses IP à accéder à PostgreSQL. Configurez le système de manière à ce qu'il soit authentifié par un mot de passe pour l'accès non local.

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

Modifiez le fichier 'postgresql.conf' comme suit.

postgresql.conf【Avant le changement】


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

# - Connection Settings -

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

postgresql.conf【après le changement】


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

# - Connection Settings -

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

En outre, comme il s'agit d'un élément important de la sécurité, si vous activez ce paramètre, vous pourrez accéder au site à partir de n'importe quelle adresse IP. Si l'IP à laquelle il faut accéder est fixe, veuillez indiquer l'IP fixe.

Ce paramètre est nécessaire pour se connecter à partir d'un serveur autre que celui où PostgreSQL est installé, par exemple pgadmin. Ce paramètre n'est pas nécessaire si vous vous connectez au serveur et exécutez la commande psql. (puisque la connexion provient de lui-même (localhost))

Il s'agit d'un paramètre de sécurité important, aussi réduisez autant que possible le nombre d'utilisateurs qui peuvent y accéder.

Puis modifiez 'pg_hba.conf'.

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

Ajoutez les informations suivantes à la fin du document.

pg_hba.conf


#Authentification du mot de passe depuis l'extérieur.
host    all             all             0.0.0.0/0            md5

En incluant ce paramètre, un mot de passe est requis lors de la connexion depuis l'extérieur. Ces zones peuvent constituer de graves failles de sécurité si elles ne sont pas configurées ou si elles sont configurées de manière incorrecte, alors veuillez les configurer avec le plus grand soin.

2-4. contrôle du bootstrap

Maintenant que la préconfiguration est terminée, vérifiez que PostgreSQL démarre. Comme la BD a été construite en tant qu'utilisateur postgres, passez à l'utilisateur postgres avant de commencer.

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

Après que PostgreSQL ait été démarré avec succès, vérifiez que la commande psql fonctionne sans problème. Exécutez la commande psql en tant qu'utilisateur 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)

Il n'y a pas de problème si les résultats ci-dessus sont renvoyés.

2-5. Réglage du démarrage automatique

Bien que ce ne soit pas obligatoire, il est difficile de démarrer PostgreSQL à chaque fois que le serveur est redémarré, c'est pourquoi il est configuré pour que PostgreSQL démarre automatiquement au démarrage du serveur. Il s'inscrit également à la commande systemctl. Veuillez noter que cette procédure est pour CentOS7, donc si vous utilisez autre chose que CentOS7, vous devrez utiliser la commande Service pour gérer cela.

Vérifiez si '/usr/lib/systemd/system/postgresql.service' existe. Sinon, créez 'postgresql.service' en utilisant la procédure suivante. Exécuter en tant qu'utilisateur root.

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

Les informations suivantes sont fournies.

postgresql.service


[Unit]
#Description.
Description=PostgreSQL
#Contrôle avant et après l'exécution.
#Before=xxx.service
After=network.target

[Service]
#Désignation des utilisateurs et des groupes
User=postgres
Group=postgres
#Une fois activé, mettez le statut sur Activé.
Type=oneshot
RemainAfterExit=yes
#Démarrer, arrêter et recharger.
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]
#Paramètres équivalents au Runlevel 3.
WantedBy=multi-user.target

Ensuite, enregistrez-vous avec la commande 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. Ajout d'un utilisateur administratif à PostgreSQL

Créez un utilisateur à utiliser dans l'application PostgreSQL, distinct de l'utilisateur qui exploite PostgreSQL depuis Linux. Il s'agit de l'utilisateur lors des opérations avec pgadmin, etc. Je voudrais changer le mot de passe de l'utilisateur postgres qui existe par défaut et l'utiliser.

Exécutez la commande suivante en tant qu'utilisateur de postgres.

-bash-4.2$ psql
postgres=# alter role postgres with password 'Mot de passe (ordinateur)';
postgres=# \q

※Saisissez le mot de passe que vous souhaitez définir dans le champ "Mot de passe".

2-7. Perçage des pare-feu

Autoriser l'accès au port PostgreSQL car le pare-feu (iptables pour CentOS6 et antérieurs) n'autorise que l'accès ssh par défaut sur CentOS7. Ajoutez également l'option "permanent" pour rendre la configuration 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:

S'il est indiqué "ports : 5432/tcp", tout va bien.

Accès via pgadmin. Vous devriez pouvoir vous connecter en tant qu'utilisateur postgres avec le mot de passe que vous venez de définir.

3. résumé

Nous avons décrit la configuration initiale requise lors de l'installation de PostgreSQL. La mise en place initiale de PostgreSQL peut être difficile, aussi veuillez vous référer à cette section.

Merci d'avoir regardé jusqu'à la fin.