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 CentOS | 7.6 (1810) |
---|---|
Version de PostgreSQL | 9.2.24 |
Table des matières
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.
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.
#------------------------------------------------------------------------------
# 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;
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.
#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.
[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.
■INFORMATION
Veuillez cliquer ici pour accéder à la page d'accueil d'INFORMATION.
■PROFILE
Veuillez cliquer ici pour un profil.
■Coordonnées de contact.
Pour toute question concernant cet article, veuillez nous contacter ici.