Introduction

PostgreSQL est un puissant système de gestion de base de données objet-relationnelle, fourni sous une licence flexible de type BSD. PostgreSQL contient de nombreuses fonctionnalités avancées, est très rapide et conforme aux normes.

PostgreSQL a des liaisons pour de nombreux langages de programmation tels que C, c++, Python, Java, PHP, Ruby… Il peut être utilisé pour alimenter n’importe quoi, des applications web simples aux bases de données massives avec des millions d’enregistrements.,

installation du Client

Si vous souhaitez uniquement vous connecter à un serveur PostgreSQL externe, n’installez pas le package PostgreSQL principal, mais installez le package client PostgreSQL à la place. Pour ce faire, utilisez la commande suivante

 sudo apt-get install postgresql-client

vous vous connectez ensuite au serveur avec la commande suivante

 psql -h server.domain.org database user

Après avoir inséré le mot de passe, vous accédez à PostgreSQL avec des commandes de ligne., Vous pouvez par exemple insérer les éléments suivants

 SELECT * FROM table WHERE 1;

Vous quittez la connexion avec

 \q

Installation

pour installer le serveur localement, utilisez la ligne de commande et tapez:

 sudo apt-get install postgresql postgresql-contrib

nstallez la dernière version disponible dans votre version ubuntu et les add-ons couramment utilisés pour cela.

Voir « Liens externes » ci-dessous pour les options pour obtenir des versions plus récentes.,

installation de PostGIS, langages procéduraux, interfaces client, etc.

des paquets supplémentaires contiennent des runtimes de langage procédural, des add-ons comme PostGIS, des interfaces client de langage comme psycopg2 pour Python, etc. Vous pouvez obtenir une liste avec:

 apt-cache search postgres

Administration

pgAdmin III est une interface graphique pratique pour PostgreSQL, elle est essentielle pour les débutants. Pour l’installer, tapez sur la ligne de commande:

 sudo apt-get install pgadmin3

Vous pouvez également utiliser le gestionnaire de paquets Synaptic du Système>menu d’Administration pour installer ces paquets.,

configuration de base du serveur

pour commencer, nous devons définir le mot de passe de L’utilisateur PostgreSQL (rôle) appelé « postgres »; nous ne pourrons pas accéder au serveur en externe sinon. En tant qu’utilisateur Linux « postgres” local, nous sommes autorisés à nous connecter et à manipuler le serveur à l’aide de la commande psql.

dans un terminal, tapez:

sudo -u postgres psql postgres

cela se connecte en tant que rôle avec le même nom que l’utilisateur local, c’est-à-dire « postgres », à la base de données appelée « postgres » (1er argument de psql).,

définissez un mot de passe pour le rôle de base de données « postgres » à l’aide de la commande:

\password postgres

et donnez votre mot de passe lorsque vous y êtes invité. Le texte du mot de passe sera masqué de la console pour des raisons de sécurité.

tapez Control+D ou \q pour quitter l’invite posgreSQL.

Créer une base de données

Pour créer la première base de données, que nous appellerons « mydb », tapez simplement:

 sudo -u postgres createdb mydb

Installation de l’Instrumentation de Serveur (pour PgAdmin) pour Postgresql 8.4 9.3

PgAdmin nécessite l’installation d’un add-on pour la fonctionnalité complète., L’addon « adminpack », qu’il appelle Server Instrumentation, fait partie de postgresql-contrib, vous devez donc installer ce package si vous ne l’avez pas déjà fait:

 sudo apt-get install postgresql-contrib

ensuite, pour activer l’extension, pour »Postgresql 8.4″, exécutez l’adminpack.script sql, tapez simplement:

 sudo -u postgres psql < /usr/share/postgresql/8.4/contrib/adminpack.sql

pour « Postgresql 9.3″+ installez l ‘ « extension » adminpack dans la base de données « postgres »:

 sudo -u postgres psql CREATE EXTENSION adminpack;

configuration alternative du serveur

Si vous n’avez pas l’intention de vous connecter à la base de données à partir d’autres machines, cette configuration alternative,

par défaut dans Ubuntu, Postgresql est configuré pour utiliser l’authentification ‘ident sameuser’ pour toutes les connexions de la même machine. Consultez L’excellente documentation Postgresql pour plus d’informations, mais cela signifie essentiellement que si votre nom D’utilisateur Ubuntu est ‘foo’ et que vous ajoutez ‘foo’ en tant qu’utilisateur Postgresql, vous pouvez vous connecter à la base de données sans nécessiter de mot de passe.,

étant donné que le seul utilisateur qui peut se connecter à une nouvelle installation est l’utilisateur postgres, voici comment créer vous-même un compte de base de données (qui est dans ce cas également un superutilisateur de base de données) avec le même nom que votre nom de connexion, puis créer un mot de passe pour l’utilisateur:

 sudo -u postgres createuser --superuser $USER sudo -u postgres psql
 postgres=# \password $USER

Les programmes clients, par défaut, se connectent à l’hôte local en utilisant votre nom de connexion Ubuntu et attendez-vous à trouver une base de données avec ce nom aussi., Donc, pour rendre les choses vraiment faciles, utilisez vos nouveaux privilèges de superutilisateur accordés ci-dessus pour créer une base de données avec le même nom que votre nom de connexion:

 sudo -u postgres createdb $USER

Se connecter à votre propre base de données pour essayer du SQL devrait maintenant être aussi facile que:

 psql

« 20713a1f9f »>

Vous pouvez aller de l’avant et dire à Amarok d’utiliser PostgreSQL pour stocker son catalogue de musique., Le nom de la base de données serait amarokdb, le nom d’utilisateur serait votre propre nom de connexion, et vous n’avez même pas besoin d’un mot de passe grâce à ‘ident sameuser’ afin que vous puissiez laisser ce vide.

utilisation de l’interface graphique pgAdmin III

pour avoir une idée de ce que PostgreSQL peut faire, vous pouvez commencer par lancer un client graphique. Dans un type de terminal:

 pgadmin3

Vous serez présenté avec l’interface pgAdmin III. Cliquez sur le bouton » Ajouter une connexion à un serveur  » (en haut à gauche). Dans la nouvelle boîte de dialogue, entrez l’adresse 127.0.0.1 (l’hôte Local est par défaut, il peut donc être omis.,), une description du serveur, la base de données par défaut (« mydb » dans l’exemple ci-dessus), votre nom d’utilisateur (« postgres ») et votre mot de passe. Une étape supplémentaire est nécessaire pour permettre à pgAdmin III de se connecter au serveur, et c’est d’éditer pg_hba.fichier conf et changer la méthode d’authentification de pair à md5 (ne fonctionnera pas si vous n’avez pas défini le mot de passe):

sudo nano /etc/postgresql/9.3/main/pg_hba.conf

et changer la ligne

# Database administrative login by Unix domain socketlocal all postgres peer

à

# Database administrative login by Unix domain socketlocal all postgres md5

maintenant, vous devez recharger les modifications pgAdmin III vers votre serveur de base de données PostgreSQL.,

sudo /etc/init.d/postgresql reload

Avec cette interface graphique, vous pouvez commencer à créer et gérer des bases de données, interroger la base de données, exécuter SQl, etc.

gestion du serveur

pour en savoir plus sur la gestion de PostgreSQL (mais sans les spécificités Ubuntu), consultez la documentation officielle de PostgreSQL

gestion des utilisateurs et des droits

La gestion des utilisateurs est discutée en détail dans le chapitre authentification client de la documentation PostgreSQL; ce qui suit est une introduction

Pour gérer les utilisateurs, vous devez d’abord modifier le fichier /etc/postgresql/actuel/main/pg_hba.,conf et modifier la configuration par défaut qui est très verrouillée et sécurisée. Par exemple, si vous souhaitez que postgres gère ses propres utilisateurs (non liés aux utilisateurs système), vous ajouterez la ligne suivante:

8<-------------------------------------------# TYPE DATABASE USER IP-ADDRESS IP-MASK METHODhost all all 10.0.0.0 255.255.255.0 md58<-------------------------------------------

ce qui signifie que sur votre réseau local (10.0.0.0/24 – remplacer par votre propre réseau local !), les utilisateurs de postgres peuvent se connecter via le réseau à la base de données en fournissant un couple utilisateur / mot de passe classique.

en plus de permettre à un utilisateur de se connecter via le réseau à une base de données sur le serveur, vous devez activer PostgreSQL pour écouter sur différents réseaux., Pour ce faire, ouvrez /etc/postgresql/actuel/main/postgresql.conf dans votre éditeur préféré et modifiez les listen_addresses comme ci-dessous:

listen_addresses = '*'

pour écouter sur toutes les interfaces réseau. Voir les documents pour listen_addresses pour d’autres options.

pour créer une base de données avec un utilisateur qui a tous les droits sur la base de données, utilisez la commande suivante:

sudo -u postgres createuser -D -A -P myusersudo -u postgres createdb -O myuser mydb

La première ligne de commande crée l’utilisateur sans droits de création de base de données (-D) sans ajouter de droits d’utilisateur-A) et, La deuxième ligne de commande crée la base de données ‘mydb avec’ myuser ‘ comme propriétaire.

Ce petit exemple conviendra probablement à la plupart de vos besoins. Pour plus de détails, veuillez vous référer aux pages de manuel correspondantes ou à la documentation en ligne.

redémarrage du serveur

Après avoir configuré le réseau / les utilisateurs, vous devrez peut-être recharger le serveur, voici une commande suggérée pour le faire.

sudo /etc/init.d/postgresql reload

Quelques modifications de paramètres dans postgresql.,conf nécessite un redémarrage complet, ce qui mettra fin aux connexions actives et annulera les transactions non validées:

sudo /etc/init.d/postgresql restart

pour en savoir plus

Si vous n’êtes pas familier avec SQL, vous voudrez peut-être examiner ce langage puissant, bien que certaines utilisations simples de PostgreSQL ne nécessitent pas

le site Web de PostgreSQL contient une mine d’informations sur l’utilisation de cette base de données. En particulier, le tutoriel est un point de départ utile, mais vous pouvez ignorer l’étape d’installation car vous l’avez déjà installé à l’aide de packages Ubuntu.,

Dépannage

fe_sendauth: pas de mot de passe fourni

Votre pg_hba.conf spécifie que l’authentification md5 doit être utilisée pour cette connexion en fonction de l’hôte d’origine, de la méthode de connexion et du nom d’Utilisateur/base de données demandé, mais votre application n’a pas fourni de mot de passe.

modifiez le mode d’authentification ou définissez un mot de passe pour l’utilisateur auquel vous vous connectez, puis spécifiez ce mot de passe dans les paramètres de connexion de votre application.,

FATAL: le rôle « myusername » n’existe pas

par défaut, PostgreSQL se connecte à L’utilisateur PostgreSQL avec le même nom que l’utilisateur UNIX actuel. Vous n’avez pas créé D’utilisateur PostgreSQL sous ce nom dans votre base de données.

créez un utilisateur approprié ou spécifiez un nom d’utilisateur différent avec lequel vous pouvez vous connecter. Dans les outils de ligne de commande, l’indicateur-U fait cela.

FATAL: base de données « myusername » n’existe pas

Un utilisateur nommé « myusername » existe, mais il n’y a pas de base de données du même nom.,

par défaut, PostgreSQL se connecte à la base de données avec le même nom que l’utilisateur auquel vous vous connectez, mais il ne crée pas automatiquement la base de données si elle n’existe pas.

créez la base de données ou spécifiez une autre base de données à laquelle vous connecter.

FATAL: l’authentification par pair a échoué pour l’utilisateur « myusername »

Vous vous connectez à localhost via un socket unix. Un utilisateur nommé « myusername » existe, mais votre utilisateur unix actuel n’est pas le même que ce nom d’utilisateur., PostgreSQL est configuré pour utiliser l’authentification « Pair » sur les sockets unix pour ce combo utilisateur/db, il faut donc que vos noms d’utilisateur unix et postgresql correspondent.

connectez – vous à partir de l’utilisateur unix qui correspond à L’utilisateur PostgreSQL souhaité-peut – être avec sudo-u theusername psql-ou changez pg_hba.conf pour utiliser un autre mode d’authentification comme « md5 » pour ce nom d’utilisateur.,

impossible de se connecter au serveur: aucun fichier ou répertoire de ce type

Une erreur comme celle-ci (peut-être avec un chemin de socket Unix différent, selon votre installation):

 psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

peut signifier un certain nombre de choses:

* le serveur n’est pas en cours d’exécution;

* le serveur libpq, soit en raison de différentes valeurs par défaut compilées ou D’un paramètre non adapté;

* le serveur écoute sur un « port »différent., PostgreSQL émule les ports TCP/IP sur les sockets unix en utilisant le numéro de port comme suffixe pour le fichier socket, par exemple 5432.

éliminez-les à leur tour.

assurez-vous D’abord que le serveur est en cours d’exécution. Sur Ubuntu, ps – u postgres-f vous montrera tous les processus s’exécutant en tant que Postgres utilisateur-vous voulez en voir plusieurs nommés postgres.

maintenant, assurez-vous que le serveur écoute où votre client pense qu’il est. Pour connaître le répertoire de socket de votre serveur PostgreSQL:

 sudo -u postgres psql -c "SHOW unix_socket_directories;"

ou sur les anciennes versions de PostgreSQL, unix_socket_directory en tant que paramètre a changé de nom., Pour afficher le port du serveur (qui s’applique à la fois aux sockets TCP/IP et unix):

 sudo -u postgres psql -c "SHOW port;"

Si vous ne pouvez même pas vous connecter avec psql sous Unix user postgres, vous pouvez vérifier le répertoire de socket avec lsof:

 $ sudo lsof -U -a -c postgres COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME postgres 6565 postgres 5u unix 0xffff88005a049f80 0t0 183009 /tmp/.s.PGSQL.5432 postgres 6566 postgres 1u unix 0xffff88013bc22d80 0t0 183695 socket postgres 6566 postgres 2u unix 0xffff88013bc22d80 0t0 183695 socket

dans ce cas, la première ligne est Ce serveur a le répertoire de socket / tmp avec le port 5432.,

Si votre client recherche dans un répertoire de socket différent, vous essayez probablement de vous connecter via des sockets unix au chemin de socket par défaut et/ou au port par défaut, et la libpq à laquelle votre application cliente est liée a un chemin de socket Unix compilé et / ou un port différent de votre PostgreSQL en cours d’exécution. Très probablement, votre LD_LIBRARY_PATH ou /etc / ld.so.conf a une libpq différente de celle fournie avec votre version de PostgreSQL. Cela n’a généralement pas beaucoup d’importance, vous pouvez simplement remplacer le répertoire socket.,

pour spécifier un autre répertoire socket et/port port auquel se connecter, spécifiez le répertoire socket comme paramètre hôte dans vos options de connexion, par exemple pour vous connecter en tant qu’utilisateur bob au serveur écoutant dans /tmp sur le port 5433:

 psql -h /tmp -p 5433 -U bob ...

ou sous forme de chaîne de connexion:

 psql "host=/tmp port=5433 user=bob ..."

la même chose fonctionne avec n’importe quel client qui utilise libpq (tous les outils du client PostgreSQL, plus par exemple psycopg2, la gemme PG dans Ruby/Rails, Postgres et PDO de PHP, DBB::pg de Perl, etc.)., Il ne fonctionne pas avec les clients non-libpq comme PgJDBC, py-postgresql, etc., mais la plupart d’entre eux ne supportent pas du tout les sockets unix. Consultez la documentation client pour les clients non basés sur libpq.

téléchargements PostgreSQL officiels

Le projet PostgreSQL fournit une liste officielle des emplacements de téléchargement, y compris un référentiel de logiciels Ubuntu, sur sa page de téléchargement. En particulier, les utilisateurs D’Ubuntu peuvent obtenir des versions PostgreSQL plus récentes que celles empaquetées dans leur version Ubuntu en utilisant apt-get via apt.postgresql.org.

pour le support et les services autour de PostgreSQL, voir la page services et support.,

EnterpriseDB

la page des téléchargements de PostgreSQL Linux contient une section sur « L’installateur graphique » construit par EnterpriseDB. Vous téléchargez le programme d’installation, modifiez ses propriétés pour permettre de l’exécuter en tant que commande (il a .exécuter l’extension), et l’exécuter à partir de l’invite de commande comme dans « sudo whateveritwas.exécuter ».

vous vous retrouvez avec

  • instance de serveur db configurée, qui commence avec votre serveur
  • application client pgAdmin III UI

notez que le logiciel installé ne sera pas intégré à Ubuntu software center., En conséquence, vous ne recevrez aucune mise à jour de sécurité D’Ubuntu. Cependant, la version installée correspondra étroitement à la dernière version D’Ubuntu.

Linux clé en main

une appliance PostgreSQL basée sur Ubuntu est l’un des moyens les plus simples de se mettre en marche avec PostgreSQL sur Ubuntu. Il fait partie d’une famille d’Appliances logicielles Linux clés en main pré-intégrées basées sur Ubuntu 10.04.1 (Lucid LTS).