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 :
- Utiliser un installateur graphique comme BigSQL ou Postgres.app
- 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:
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:
*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 :
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:
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 :
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 :
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écuterCREATE 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'
Où 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
:
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 :
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 :
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
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
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 à :
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):
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 !
Postico nouveau favori
- Cliquez sur ‘Done’ pour l’enregistrer
- Puis cliquez sur le bouton ‘Connect’.
- Vous avez terminé !
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 :
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
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é !
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 :
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!
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
etcreateuser
- Changer le mot de passe d’un utilisateur
- Créer une base de données en utilisant
psql
etcreatedb
Changer le nom d’une base de données
- Utiliser l’outil de ligne de commande
- 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
ALTER ROLE
. - Documentation pour
CREATE DATABASE
- Documentation pour
ALTER DATABASE
- Documentation pour
GRANT
.
Documentation pour CREATE ROLE
Clients populaires Postgres GUI
- Documentation Postgres
- DocumentationpgAdmin
- Manuel en ligne de Navicat
.