Articles

Démarrer avec PostgreSQL sur Mac OSX

I. Introduction

L’autre jour, j’ai commencé un nouveau projet Node.js et je voulais utiliser PostgreSQL comme backend de ma base de données. Si vous êtes ici à lire ce tutoriel, avec un peu de chance, vous essayez de faire la même chose !

Ce tutoriel vous apprendra à installer, configurer et utiliser PostgreSQL sur MacOSX 10.7 (Lion) et plus. Vous aurez besoin d’un niveau de confort de base au moins pour utiliser la ligne de commande en utilisant soit le terminal intégré de MacOSX, iTerm2, Zsh, ou quelque chose de similaire. Au moment où nous aurons terminé, vous aurez :

  • Avoir une instance PostgreSQL 9.5.4 en cours d’exécution
  • Savoir comment créer et gérer des bases de données et des utilisateurs
  • Savoir comment utiliser les outils de la ligne de commande et de l’interface utilisateur pour gérer votre base de données

II. À propos de PostgreSQL

PostgreSQL est un système de gestion de base de données relationnel objet, ou SGBDR (tout un programme !), conforme à la norme ACID. En termes simples, il s’agit d’une base de données qui vous permet de relier une donnée à une autre (d’où le terme « relationnel »). Il fonctionne sur presque tous les systèmes d’exploitation, y compris Linux, Unix et Windows. Il est très performant et très évolutif, capable de gérer d’énormes quantités de données et des applications Internet à forte charge avec des milliers d’utilisateurs simultanés. Sa combinaison unique de simplicité et de puissance en fait un choix populaire pour les utilisateurs individuels et les petites entreprises, mais aussi pour les entreprises comme Yahoo, Uber, Disqus et TripAdvisor.

Postgres prend en charge une longue liste de fonctionnalités de base de données, dont plusieurs fonctionnalités d’entreprise. En dehors des fonctionnalités standard des bases de données relationnelles, certaines des fonctionnalités les plus notables de Postgres sont :

  • Réplication en streaming
  • Schémas
  • Objets définis par l’utilisateur comme les opérateurs, les types de données et les fonctions
  • Transactions imbriquées
  • Héritage de tables
  • Partitionnement
  • Plusieurs types de données inhabituels, comme l’argent, la géométrie, les adresses IP, JSON et les plages de données.
  • Peut exécuter des procédures stockées dans plus d’une douzaine de langages de programmation, notamment Java, Perl, Python, Ruby et C/C++.

En raison de son support de premier ordre pour JSON, Postgres est souvent une bonne alternative aux bases de données « No-SQL » comme MongoDB. En savoir plus sur PostgreSQL

III. Démarrage

La première chose que nous allons faire est d’installer Postgres. Il y a deux façons principales d’obtenir Postgres sur votre machine :

  1. Utiliser un installateur graphique comme BigSQL ou Postgres.app
  2. Utiliser un gestionnaire de paquets pour installer via la ligne de commande.

Vous pouvez choisir l’option qui vous convient le mieux. Pour ce tutoriel, voyons comment installer en ligne de commande.

1. Obtenir Homebrew

Pour installer PostgreSQL sur la ligne de commande, nous allons utiliser un gestionnaire de paquets appelé Homebrew. Si vous avez déjà installé Homebrew, vous pouvez passer directement à l’installation de PostgreSQL. Sinon, continuons.

Débutons en copiant et collant la commande suivante dans notre ligne de commande :

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Ne vous inquiétez pas de ce que tout cela fait – tant que vous utilisez MacOSX 10.7 ou plus, l’interpréteur Ruby est préinstallé. Le reste de cette commande (la curl commande) est un outil permettant d’effectuer des requêtes web depuis votre ligne de commande. Celle-ci télécharge le script à l’URL donnée, puis l’interpréteur Ruby l’exécute. Vous devriez voir une sortie similaire à ce qui suit:

postgres server
Installation de Homebrew

Maintenant que nous avons Homebrew, nous pouvons procéder à l’installation de Postgres!

2. Installation de Postgres

Maintenant que nous avons Homebrew, l’installation de PostgreSQL est très facile. Exécutez la commande suivante pour installer PostgreSQL à l’aide de Homebrew:

brew install postgresql

Vous devriez alors voir la sortie suivante:

postgresql server
*Installation *

Homebrew se charge de résoudre les dépendances de Postgres, qui dans ce cas sont OpenSSL et Readline. Il se charge également de savoir quelles sont les dernières versions, où les obtenir et comment les décompresser. Le plus important, ce sont les instructions faciles à manquer qui se trouvent à la toute fin de l’installation :

postgresql server
Démarrer les services

Allons-y et démarrons Postgres en cours d’exécution, et assurons-nous que Postgres démarre à chaque fois que votre ordinateur démarre. Exécutez la commande suivante:

pg_ctl -D /usr/local/var/postgres start && brew services start postgresql

Enfin, vérifions que Postgres est installé et en cours d’exécution. Vérifions quelle version est en cours d’exécution:

postgres -V

Votre sortie devrait ressembler à ce qui suit:

postgresql server
Postgres installé

C’est tout ! Vous avez installé Postgres. Maintenant, nous sommes enfin prêts à apprendre à l’utiliser !

3. Configuration de Postgres

Postgres travaille assez dur pour se rendre utilisable dès la sortie de la boîte sans que vous ayez à faire quoi que ce soit. Par défaut, il crée automatiquement l’utilisateur postgres. Voyons quels autres utilisateurs il a créés. Commençons par utiliser l’utilitaire psql, qui est un utilitaire installé avec Postgres qui vous permet d’effectuer des fonctions administratives sans avoir besoin de connaître leurs commandes SQL réelles.

Débutez en saisissant ce qui suit sur la ligne de commande :

psql postgres

(Vous devrez peut-être utiliser sudo psql postgres pour que cette commande fonctionne, selon la configuration de votre système).

Vous verrez une sortie comme la suivante :

serveurpostgresql
sortiepsql

C’est la ligne de commande psql. Nous pouvons maintenant entrer une commande pour voir quels utilisateurs sont installés :

postgres=# \du

Sous les couvertures, cette commande exécute une requête SQL (nous en apprendrons plus tard) qui obtient tous les utilisateurs de la base de données. Sur ma machine, elle renvoie ce qui suit :

postgresql server
psql User List

Nous voyons l’utilisateur Postgres dont j’ai parlé, mais quel est cet autre utilisateur, engineerapart ? C’est l’une des choses que Postgres fait pour vous faciliter la vie lorsque vous l’installez pour la première fois. Sur la plupart des systèmes d’exploitation basés sur Linux, le nom d’utilisateur qui est utilisé par défaut par tous les processus est celui sous lequel vous êtes connecté. Vous n’avez pas besoin de transmettre votre nom d’utilisateur à la plupart des programmes. Mais si un programme particulier, comme Postgres, n’a pas votre nom d’utilisateur configuré – il échouera !

Donc, lorsque Postgres est installé, il crée automatiquement un utilisateur de base de données qui correspond à votre nom d’utilisateur, afin que vous puissiez commencer tout de suite.

A. Créer des utilisateurs

Postgres ne gère pas vraiment directement les utilisateurs ou les groupes, comme le font la plupart des modèles de permission standard. Au lieu de cela, il gère directement ce qu’il appelle des rôles.

Bien qu’il soit certainement pratique que Postgres configure un ensemble d’utilisateurs par défaut pour vous, c’est une très mauvaise idée de les utiliser pour quoi que ce soit d’autre que le développement local, car ils sont très largement connus et, plus important encore, ce sont des comptes de super-utilisateurs – ils peuvent tout faire, y compris supprimer des bases de données. Ce n’est pas sûr pour une base de données de production – nous avons besoin d’utilisateurs avec des autorisations limitées. Alors comment créer et utiliser de nouveaux utilisateurs (rôles) ?

Il y a deux façons principales de le faire :

  • Exécuter directement la CREATE ROLE requête SQL sur la base de données
  • Utiliser l’utilitaire createuser qui est installé avec Postgres (qui est juste un wrapper pour exécuter CREATE ROLE).

Examinons les deux cas.

A.1.. CREATE ROLE avec psql

La syntaxe de base de CREATE ROLE ressemble à ceci :

CREATE ROLE username WITH LOGIN PASSWORD 'quoted password' 

username est l’utilisateur que vous voulez créer, et le mot de passe va à la fin entre guillemets. Nous verrons les options plus tard.

Démarrons en nous connectant à nouveau à notre outil utile psql :

serveur postgresql
sortiepsql

Pendant que nous sommes ici, définissons le mot de passe du compte postgres par défaut, il n’a pas de mot de passe.

postgres=# \password postgres

Vous serez invité à entrer le mot de passe et à le confirmer. Maintenant, créons notre nouveau rôle :

postgres=# CREATE ROLE patrick WITH LOGIN PASSWORD 'Getting started'; postgres=# \du

Votre sortie devrait ressembler à ce qui suit :

serveur postgresql
psql CREATE ROLE

Attendez . La liste des attributs de l’utilisateur patrick est complètement vide. Pourquoi ?

C’est ainsi que Postgres gère de manière sécurisée les valeurs par défaut. Cet utilisateur peut lire toute base de données, table ou ligne pour laquelle il a des autorisations, mais rien d’autre – il ne peut pas créer ou gérer des bases de données et n’a aucun pouvoir d’administration. C’est une bonne chose ! Cela aide à garder votre base de données sécurisée.

Ajoutons donc la permission CREATEDB à notre nouvel utilisateur pour lui permettre de créer des bases de données :

postgres=# ALTER ROLE patrick CREATEDB; postgres=# \du postgres=# \q # quits

Votre sortie devrait ressembler à ceci :

postgresql server
psql ALTER ROLE

Documentation pour CREATE ROLE

Documentation pour ALTER ROLE

A.2. L’utilitaire createuser

Postgres est livré avec un certain nombre d’utilitaires de ligne de commande très utiles qui rendent le processus ci-dessus beaucoup plus facile. Au lieu de se connecter à psql, d’exécuter des requêtes SQL et de devoir connaître les détails des instructions de requête, vous pouvez utiliser une interface de ligne de commande familière pour effectuer les mêmes tâches. Voici quelques-uns de ces outils :

  • createuser : crée un utilisateur
  • createdb : crée une base de données
  • dropuser : supprime un utilisateur
  • dropdb : supprime une base de données
  • postgres : exécute le serveur SQL lui-même (nous avons vu celui-là ci-dessus lorsque nous avons vérifié notre version de Postgres !)
  • pg_dump : décharge le contenu d’une seule base de données dans un fichier
  • pg_dumpall : décharge toutes les bases de données dans un fichier
  • psql : nous reconnaissons celui-là !

La liste complète des applications clientes

Donc, utilisons createuser pour faire la même chose que ci-dessus : créer l’utilisateur patrick :

createuser patrick

Ceci crée l’utilisateur patrick avec tous les attributs par défaut, encore une fois, sans la possibilité de créer des bases de données. Si nous voulions la capacité de créer une base de données, vous exécuteriez plutôt ce qui suit :

createuser patrick --createdb

Malheureusement, il n’existe pas d’outil de ligne de commande pour accomplir la même chose que ALTER ROLE. Pour modifier les utilisateurs après leur création, vous devez utiliser psql.

Documentation pour createuser

A.3. Résumé

C’est tout ! Maintenant notre nouvel utilisateur est configuré et peut créer des bases de données. Commençons à gérer notre base de données avec ce nouvel utilisateur.

B. Créer une base de données

Tout comme la création d’un utilisateur, il existe deux façons de créer une base de données :

  • Exécuter des commandes SQL directement avec psql
  • L’utilitaire de ligne de commande createdb.

B.1. CREATE DATABASE avec psql

La syntaxe SQL de base pour créer une base de données dans PostgreSQL est:

CREATE DATABASE databasename;

Nous allons suivre le même processus que ci-dessus :

psql postgres -U patrick

postgresql server
Connexion de l’utilisateur postgreSQL

Vous remarquerez que l’invite est légèrement différente – la # s’est transformée en >. Cela indique que vous n’utilisez plus de compte super utilisateur.

postgres=> CREATE DATABASE super_awesome_application;

Documentation pour CREATE DATABASE

Une fois ceci fait, vous devez ajouter au moins un utilisateur qui a la permission d’accéder à la base de données (en dehors des super utilisateurs, qui peuvent tout accéder). Pour ce faire, nous allons apprendre une nouvelle commande SQL :

postgres=> GRANT ALL PRIVILEGES ON DATABASE super_awesome_application TO patrick; postgres=> \list postgres=> \connect super_awesome_application postgres=> \dt postgres=> \q

Documentation pour GRANT

Ici, je vous ai également montré quelques nouvelles commandes qui peuvent être utilisées avec psql :

  • \list : liste toutes les bases de données de Postgres
  • \connect : se connecter à une base de données spécifique
  • \dt : lister les tables de la base de données actuellement connectée

serveur postgresql
psql CREATE DATABASE

Et c’est tout.

Vous pouvez maintenant créer, lire, mettre à jour et supprimer des données sur notre base de données super_awesome_application avec l’utilisateur patrick!

B.2…. L’utilitaire createdb

Comme ci-dessus, la création d’une base de données à l’aide de createdb est plus simple, avec la réserve que vous ne pouvez pas gérer la base de données après sa création. Pour cela, psql est nécessaire.

createdb super_awesome_application -U patrick

Ici, j’ai invoqué l’utilitaire createdb et lui ai passé l’utilisateur patrick à utiliser pour se connecter à la base de données. C’est cet utilisateur dont les permissions seront vérifiées pour exécuter la commande create.

Il est très, très rare que vous souhaitiez modifier une base de données après sa création. Les seules choses que vous pouvez modifier sont son nom et certains paramètres de configuration. La modification des paramètres de configuration (comme la collation ou les jeux de caractères) a des implications qui dépassent largement le cadre de ce tutoriel. Cependant, nous pouvons changer le nom si nous le souhaitons.

Encore, il n’existe pas d’outil en ligne de commande pour modifier une base de données une fois qu’elle a été créée. Nous devons utiliser psql:

psql postgres -U patrick postgres=> ALTER DATABASE super_awesome_application RENAME TO even_more_awesome_application; postgres=> \q

Et la sortie devrait être similaire à :

postgresql server
psql ALTER DATABASE

Documentation pour ALTER DATABASE

B.3. Résumé

C’est tout ! Nous avons créé notre utilisateur, créé une base de données, et donné à l’utilisateur des autorisations pour utiliser la base de données. En cours de route, nous avons appris à utiliser certains des outils de ligne de commande Postgres préinstallés. Cela nous donnera une excellente base pour comprendre un comportement plus complexe dans la section suivante.

Maintenant, jetons un coup d’œil à certains outils graphiques populaires pour gérer PostgreSQL sur MacOSX.

IV. Les interfaces graphiques populaires pour PostgreSQL sur MacOSX

Jusqu’à présent, nous nous sommes plutôt concentrés sur les outils en ligne de commande pour gérer notre installation Postgres. Cependant, pour certaines choses, cela est laborieux et demande beaucoup de temps : Par exemple, si vous voulez une vue rapide des données que vous avez dans une table, sortir cela des outils en ligne de commande prend plus de temps que d’utiliser une interface graphique. Faites-le 100 fois par jour pendant le développement, ce temps commence à s’additionner !

Alors, naturellement, un groupe de développeurs entreprenants a construit des interfaces graphiques assez impressionnantes qui peuvent être utilisées pour gérer vos serveurs Postgres locaux (et distants !). Nous allons jeter un coup d’œil à quelques-unes des plus populaires et conviviales.

1. Postico (https://eggerapps.at/postico/)

Postico est un client Postgres moderne pour OSX, construit par le même développeur qui a construit Postgres.app (mentionné ci-dessus). Il est gratuit, mais vous pouvez acheter une licence pour débloquer des fonctionnalités de puissance supplémentaires. C’est l’interface graphique que j’utilise pour gérer Postgres, car elle est conçue spécifiquement pour Mac et possède une belle interface utilisateur, très facile à utiliser (mais puissante). Elle comprend également un éditeur SQL pour les requêtes complexes.

Pour commencer avec Postico, il suffit de :

  • Téléchargez-le à l’adresse https://eggerapps.at/postico/download/
  • Double-cliquez sur le fichier Zip téléchargé dans le Finder
  • Déplacez le fichier extrait Postico.app dans votre dossier Applications
  • Trouver Postico dans Launchpad et lancer l’application.

Vous verrez un écran qui ressemble à ce qui suit (sans aucune connexion à la base de données configurée):

postgresql server
Postico

Pour vous connecter à votre base de données locale :

  • Cliquez sur ‘Nouveau favori’
  • Donnez-lui un nom facile à retenir
  • Vous pouvez laisser les valeurs par défaut entrées dans les cases
  • Si vous avez modifié le postgres mot de passe de l’utilisateur ci-dessus, entrez-le dans la case du mot de passe
  • Déposez la Options et sélectionnez « Afficher toutes les bases de données » – sinon vous vous demanderez où sont vos bases de données !

serveurpostgresql
Postico nouveau favori

  • Cliquez sur ‘Done’ pour l’enregistrer
  • Puis cliquez sur le bouton ‘Connect’.
  • Vous avez terminé !

serveurpostgresql
Postico connecté

Lisez la documentation de Postico pour apprendre à utiliser les étonnantes fonctionnalités de Postico!

2. pgAdmin (https://www.pgadmin.org/)

Admin est la plus ancienne des interfaces graphiques de Postgres, sa première version ayant été publiée quelques mois seulement après la première version de Postgre en 1996. Ayant été réécrite plusieurs fois, elle peut fonctionner sous Linux, MacOSX et Windows, et dispose de puissants outils de gestion de base de données, notamment un éditeur SQL à syntaxe mise en évidence. Conçu pour s’exécuter à la fois sur des machines clientes et sur des serveurs déployés, pgAdmin est capable de gérer des cas avancés que Postico ne peut pas gérer.

Pour commencer à utiliser pgAdmin, il suffit de :

  • Le télécharger à l’adresse https://www.pgadmin.org/download/macos4.php
  • Double-cliquez sur le fichier image disque (DMG) téléchargé dans votre dossier Téléchargements
  • Déplacez l’application pgAdmin 4 dans votre dossier Applications
  • Repérez pgAdmin dans Launchpad et lancez l’application.

Vous verrez un écran qui ressemble à ce qui suit :

serveur postgresql
pgAdmin

Pour vous connecter à votre base de données locale :

  • Cliquez avec le bouton droit de la souris sur ‘Serveurs’ et sélectionnez Create => Server
  • Donnez-lui un nom facile à retenir et décochez la case « Connect Now »
  • Pour l’adresse du serveur, entrez localhost
  • Vous pouvez laisser les valeurs par défaut entrées dans les cases
  • Si vous avez modifié le postgres mot de passe utilisateur ci-dessus, entrez-le dans la case du mot de passe

serveur postgresql
Postico nouveau favori

  • Cliquez sur ‘Save’ pour l’enregistrer
  • Votre nouveau serveur apparaîtra dans la liste des serveurs
  • Cliquez sur votre nouveau serveur et entrez le mot de passe une fois de plus pour vous connecter
  • Vous avez terminé !

serveur postgresql
pgAdmin connecté

Lisez la documentation pgAdmin pour apprendre à utiliser les incroyables fonctionnalités de Postico !

3. Navicat (https://www.navicat.com/products/navicat-for-postgresql)

Navicat est sans aucun doute l’une des meilleures interfaces graphiques de gestion de niveau entreprise pour PostgreSQL. Doté non seulement d’un éditeur SQL et de la visualisation et de la gestion des bases de données, des tables et des lignes, Navicat dispose également d’un modeleur de données qui vous permet de concevoir et de déboguer graphiquement vos schémas de base de données. Cependant, bien que Navicat soit livré avec un essai gratuit de 14 jours, ses licences vont de 100 à 250 $.

Pour commencer à utiliser Navicat, il suffit de :

  • Le télécharger à l’adresse https://www.navicat.com/download/navicat-for-postgresql
  • Doubler le clic sur l’image disque téléchargée (navicat112pgsqlen.dmg) dans votre dossier Téléchargements
  • Déplacez l’application Navicat dans votre dossier Applications
  • Recherchez Navicat dans Launchpad et lancez l’application.

Vous verrez un écran qui ressemble à ce qui suit :

serveur postgresql
Navicat

Pour vous connecter à votre base de données locale :

  • Cliquez sur « Connexion »
  • Remplir la boîte de dialogue fournie en utilisant les mêmes informations que ci-dessus
  • Cliquez sur « Ok » pour enregistrer la connexion.
  • Double-cliquez sur la nouvelle connexion dans la liste à gauche, et vous êtes connecté. C’est tout!

postgresql server
Navicat connect

Lisez le manuel en ligne de Navicat pour apprendre à utiliser les incroyables fonctionnalités de Postico!

V. Résumé

PostgreSQL est l’une des meilleures bases de données relationnelles au monde, utilisée par les particuliers, les petites entreprises et les grandes entreprises. Malgré ses hautes performances et son ensemble de fonctionnalités puissantes, il est incroyablement facile de commencer à l’utiliser. Dans ce tutoriel, nous avons appris à :

  • Installer le serveur PostgreSQL sur MacOSX en utilisant Homebrew
  • Utiliser les outils de ligne de commande Postgres pour configurer Postgres :
    • Utiliser l’outil de ligne de commande psql pour afficher des informations sur la base de données
    • Créer un nouvel utilisateur en utilisant psql et createuser
    • Changer le mot de passe d’un utilisateur
    • Créer une base de données en utilisant psql et createdb
    • Changer le nom d’une base de données

  • Actroyer des autorisations d’accès sur une base de données à un utilisateur spécifique

Nous avons également jeté un bref coup d’œil à certains outils de gestion populaires basés sur l’interface graphique-.basées sur une interface graphique pour Postgres, notamment Postico, pgAdmin et Navicat.

Bonne chance ! Amusez-vous bien avec Postgres !

V. Références

Page d’accueil de PostgreSQL
Documentation de PostgreSQL

  • La liste complète des applications clientes
  • Documentation pour createuser.
  • Documentation pour createdb
  • Documentation pour CREATE ROLE

  • Documentation pour ALTER ROLE.
  • Documentation pour CREATE DATABASE
  • Documentation pour ALTER DATABASE
  • Documentation pour GRANT.

Clients populaires Postgres GUI

  • Documentation Postgres
  • DocumentationpgAdmin
  • Manuel en ligne de Navicat

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *