PostgreSQL (la plupart des gens l'appellent Postgres) est un système avancé de gestion de base de données relationnelle objet (ORDBMS). Postgres est un serveur de base de données open source avec plus de 18 ans de développement actif, ce qui fait de Postgres le meilleur choix pour les applications d'entreprise.
Postgresql est multiplateforme et fonctionne sur de nombreux systèmes d'exploitation comme Linux, OSX, Windows et la famille BSD. C'est le bon choix lorsque vous avez une application avec de grandes charges de travail de base de données. Postgres a été utilisé par de nombreuses grandes organisations, notamment Yahoo, Instagram et Disqus. Postgres est également proposé en tant que logiciel en tant que service (SaaS) par ex. Heroku et AWS (Amazon Web Services).
Dans ce tutoriel, je vais vous montrer comment installer Postgres sur votre propre serveur avec OpenSUSE Leap comme système d'exploitation. Ensuite, j'installerai phpPgAdmin afin que nous puissions gérer notre base de données Postgres à partir du navigateur Web.
Prérequis
- OpenSUSE Leap 42.1
- Privilèges root
Étape 1 - Installer PostgreSQL
Le référentiel openSUSE contient deux versions de Postgres. Dans cette étape, nous allons installer PostgreSQL 9.4 sur openSUSE avec la commande zypper.
Installez PostgreSQL avec zypper :
zypper in postgresql94 postgresql94-contrib postgresql94-server
Démarrez postgresql avec systemctl :
systemctl start postgresql
Étape 2 - Configurer l'utilisateur par défaut
Dans cette étape, nous allons définir un mot de passe pour l'utilisateur postgres. Postgresql utilise un concept similaire au système utilisateur Linux appelé "rôle" pour l'authentification et l'autorisation de base. Par défaut, postgresql crée un nouvel utilisateur nommé "postgres" pour gérer le serveur postgresql.
Commençons par la configuration de la base de données postgresql en nous connectant à l'utilisateur postgres depuis le terminal :
sudo su
su - postgres
Nous allons maintenant utiliser la commande psql. psql est l'interface de ligne de commande pour PostgreSQL, nous pouvons directement exécuter des requêtes PostgreSQL à partir de celui-ci.
psql
Depuis le shell psql, nous pouvons changer le mot de passe de l'utilisateur "postgres" avec la commande "password" ci-dessous :
\password postgres
New Password:
Entrez votre nouveau mot de passe pour l'utilisateur postgres.
Étape 3 - Créer un nouvel utilisateur PostgreSQL
Dans cette étape, nous allons créer un nouvel utilisateur/rôle avec des privilèges de superutilisateur et créer une nouvelle base de données et accorder l'accès à l'utilisateur.
Pour créer un nouvel utilisateur, nous devons nous connecter en tant qu'utilisateur postgres, puis créer un nouveau rôle et une nouvelle base de données avec la commande ci-dessous :
su - postgres
createuser -s nano
createdb nano_db
Remarque :
L'option -s est utilisée pour donner au nouvel utilisateur des privilèges de superutilisateur.
nano est le nouveau nom d'utilisateur.
nano_db est le nouveau nom de la base de données.
Connectez-vous maintenant au shell postgresql psql et donnez à notre nouveau rôle un mot de passe et accordez l'accès à la base de données.
psql
alter user nano with encrypted password '[email protected]';
grant all privileges on database nano_db to nano;
J'utiliserai ici le mot de passe "[email protected]" pour l'utilisateur nano et j'accorderai les privilèges à la base de données nano_db.
Cet utilisateur sera utilisé pour se connecter à postgresql à partir de l'interface Web phpPgAdmin, car nous ne devons autoriser aucun utilisateur par défaut ou utilisateur sans mot de passe à se connecter à postgresql à partir de phpPgAdmin.
Étape 4 - Configurer PostgreSQL
Dans cette étape, nous allons configurer PostgreSQL pour qu'il écoute sur l'adresse IP publique afin que nous puissions y accéder à distance avec des outils de modélisation de base de données depuis notre ordinateur de bureau. Vous pouvez ignorer cette étape si vous ne souhaitez pas accéder à Postgres à distance.
Allez dans le répertoire postgresql "/var/lib/pgsql/" et éditez le fichier de configuration principal "postgresql.conf" avec votre éditeur préféré :
cd /var/lib/pgsql/
cd data/
vim postgresql.conf
Décommentez la ligne 59 et changez la valeur de localhost en "*".
Décommentez la ligne 63 pour configurer le port par défaut.
listen_addresses = '*'
port = 5432
Enregistrez le fichier et quittez l'éditeur.
Pour autoriser l'accès depuis l'application Web phpPgAdmin à la base de données PostgreSQL, nous devons éditer le fichier pg_hba.conf et modifier certains paramètres de configuration.
Editez le fichier "pg_hba.conf" avec vim :
vim pg_hba.conf
En fin de ligne, changez la configuration de l'authentification en md5 :
#TYPE Database User Address Method
local all all md5
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
Si vous souhaitez autoriser de nouvelles connexions depuis l'extérieur du serveur comme l'utilisation de PgAdmin3, vous pouvez ajouter plus d'enregistrements "hôte", par ex. pour l'IP de votre bureau.
Enregistrez et quittez.
Redémarrez maintenant le service PostgreSQL avec la commande systemctl :
systemctl restart postgresql
Étape 5 - Installer et configurer phpPgAdmin
phpPgAdmin est une application Web pour gérer les bases de données PostgreSQL. Il est basé sur PHP et fournit une interface graphique pour gérer les bases de données et créer des rôles. Dans cette étape, nous allons installer phpPgAdmin et comme il est accessible depuis le navigateur Web, nous utiliserons apache2 comme serveur Web.
Installez phpPgAdmin avec cette commande zypper :
zypper in phpPgAdmin
La commande installera automatiquement les dépendances PHP et serveur web apache.
Ensuite, allez dans le répertoire phpPgAdmin et modifiez le fichier de configuration config.inc.php.
cd /etc/phpPgAdmin/
vim config.inc.php
Dans la ligne 18 de la configuration de l'hôte, définissez la valeur sur "localhost".
$conf['servers'][0]['host'] = 'localhost';
Si vous souhaitez autoriser un utilisateur portant le nom "postgres" ou "root" à se connecter à postgresql avec phpPgAdmin, vous pouvez définir la sécurité supplémentaire sur false, mais il n'est pas recommandé de la définir sur false. vérifiez la ligne 93.
$conf['extra_login_security'] = true;
Enregistrez et quittez.
Activez ensuite le PHP et l'extension de version dans apache car ils sont nécessaires à phpPgAdmin :
a2enmod php5
a2enmod version
Redémarrez maintenant tous les services avec la commande systemctl :
systemctl restart postgresql
systemctl restart apache2
Étape 6 - Tester
Accédez à phpPgAdmin depuis le navigateur Web avec l'URL :
http://192.168.1.101/phpPgAdmin/
Connectez-vous avec l'utilisateur nano et le mot de passe "[email protected]".
si vous vous connectez avec l'utilisateur 'postgres' et le mot de passe correct, cela n'est pas autorisé.