Outils personnels
Vous êtes ici : Accueil GNU / Linux Debian Installer PostgreSQL sur Debian
Actions sur le document
  • Send this page to somebody
  • Print this page
  • Add Bookmarklet

Installer PostgreSQL sur Debian

Par Pierre-Yves Landuré - Dernière modification 18/01/2013 12:21

PostgreSQL est un système de gestion de bases de données libres très puissant. D'un certain point de vue, on peut le considérer comme le Oracle du monde libre. Parmi les trucs vraiment intéressant qu'il est capable de gérer, on trouve les coordonnées géographiques. Cet article vous guide au cours de l'installation et de la configuration de PostgreSQL sur Debian.

Ce guide est obsolète. Merci de vous référer à sa nouvelle version:

Installer PostgreSQL sur Debian

Ce guide a été testé sur les distributions suivantes :

  • Debian 5.0 Lenny
  • Debian 6.0 Squeeze

Installation

Pour installer PostgreSQL, utilisez la commande suivante :

command apt-get install postgresql apg

Une fois PostgreSQL installé, nous définissons le mot de passe de l'utilisateur "postgres" qui correspond à l'utilisateur "root" sous MySQL. Nous générons le mot de passe root de PostgreSQL :

PGSQL_PWD="$(command apg -q -a  0 -n 1 -M NCL)"

Nous affichons le nouveau mot de passe :

command echo "Votre mot de passe pour l'utilisateur postgres de PostgreSQL sera : '${PGSQL_PWD}'."

Attention: Notez la valeur affichée et conservez la précieusement !

Nous mettons en place le nouveau mot de passe :

command su postgres -c "command psql -c \"ALTER USER postgres PASSWORD '${PGSQL_PWD}';\""

Votre serveur PostgreSQL est maintenant prêt à être utilisé.

Remarque : (Attention : ce qui suit peut être une faille de sécurité). Si vous souhaitez que vos bases de données soient accessible depuis le réseau, utilisez la commande suivante:

command sed -i -e "s/^[# ]*\\(listen_addresses[ ]*=[ ]*'\\)[^']*\\('.*\\)$/\\1*\\2/" \
        /etc/postgresql/8.*/main/postgresql.conf

Et redémarrez votre serveur :

test -x /etc/init.d/postgresql-8.2 && /etc/init.d/postgresql-8.3 restart
test -x /etc/init.d/postgresql-8.3 && /etc/init.d/postgresql-8.3 restart
test -x /etc/init.d/postgresql && /etc/init.d/postgresql restart

Outil d'administration simplifiée

Afin d'accélérer le processus de création de base de données, j'ai écris un petit script pour faciliter ce processus.

Installez le script pgsql-tools :

command wget "http://howto.landure.fr/gnu-linux/debian-4-0-etch/installer-postgresql-sur-debian/pgsql-tools" \
    --output-document="/usr/bin/pgsql-tools"
command chmod +x "/usr/bin/pgsql-tools"

Important : Cet outil doit être exécuté en tant que root, car il utilise la commande "su" pour exécuter des commandes en tant qu'utilisateur "postgres".

Vous pouvez maintenant créer une base de donnée à l'aide de la commande :

# pgsql-tools create-db MA_BASE

Si vous souhaitez créer une base de données propre à un domaine :

# pgsql-tools create-domain-db www.domaine.com

Dans l'exemple ci-dessus, la base de donnée créée sera WWW_DOMAINE_COM.

Vous pouvez aussi créer l'utilisateur de la base de données pour d'autres clients que la machine locale (localhost) :

# pgsql-tools create-db MA_BASE "host1 host2"
Remarque : Cet outil est encore en cours d'élaboration, ses fonctionnalités seront améliorées petit à petit.

Sauvegardes

Il est important de sauvegarder régulièrement vos bases de données, afin de pouvoir récupérer vos données en cas de crash de votre serveur. Je vous propose de gérer cela grâce à l'outil Backup Manager. En premier lieu, veuillez suivre mon guide d'installation de Backup Manager:

Installer et configurer Backup Manager sur Debian

Nous allons maintenant configurer Backup Manager pour sauvegarder nos bases de données PostgreSQL. Pour ce faire, nous allons créer un pipe personnalisé sauvegardant le résultat de la commande pgsql_dumpall :

CURRENT_PIPE_NUMBER=$(command grep -e "^[\t ]*BM_PIPE_COMMAND\[" "/etc/backup-manager.conf" \
    | command sed -e 's/.*\[\([0-9]*\)\].*/\1/')
PIPE_NUMBER=$((${CURRENT_PIPE_NUMBER}+1))
command test -z "${CURRENT_PIPE_NUMBER}" && PIPE_NUMBER=0
command sed -i -e "/export BM_PIPE_COMMAND/i\\
\\
# Pipe backuping PostgreSQL databases.\\
BM_PIPE_COMMAND[${PIPE_NUMBER}]='command su postgres -c \"command pg_dumpall  --clean\"'\\
BM_PIPE_NAME[${PIPE_NUMBER}]='postgresql'\\
BM_PIPE_FILETYPE[${PIPE_NUMBER}]='sql'\\
BM_PIPE_COMPRESS[${PIPE_NUMBER}]='bzip2'\\
" "/etc/backup-manager.conf"

Et nous activons la sauvegarde des "Pipes" :

command sed -i -e 's/[#]*\(.*BM_ARCHIVE_METHOD=.*".*\)"$/\1 pipe"/' \
    "/etc/backup-manager.conf"

PHPPgAdmin

PHPPgAdmin est une interface Web pour l'administration simplifiée de bases de données PostgreSQL. Pour l'installez, vous devez disposer d'un serveur Web avec support du PHP, cela peut être Apache ou LigHTTPd. Vous pouvez installer LigHTTPd en suivant mon guide Installer Lighttpd et PHP 5 sur Debian 4.0 Etch.

Une fois que vous disposez d'un serveur HTTP avec support du PHP, exécutez simplement la commande :

/usr/bin/apt-get install phppgadmin

Nous ajoutons maintenant la configuration de PHPPgAdmin dans LigHTTPd :

/bin/echo '# Alias for phpPgAdmin directory
alias.url += ( 
  "/phppgadmin" => "/usr/share/phppgadmin",
)

# Disallow access to libraries
$HTTP["url"] =~ "^/phppgadmin/libraries" { 
  url.access-deny = ( "" ) 
}
' > /etc/lighttpd/conf-available/50-phppgadmin.conf

Et nous activons cette configuration :

/usr/sbin/lighty-enable-mod phppgadmin
/etc/init.d/lighttpd reload

Si vous souhaitez utiliser des utilisateurs privilégiés (postgres, root, ...) avec PHPPgAdmin, appliquez la commande suivante :

command sed -i \
    -e "s/\$conf\['extra_login_security'\].*/\$conf\['extra_login_security'\] = false;/" \
  /etc/phppgadmin/config.inc.php

Une fois installé, vous pouvez y accédez en cliquant sur ce lien : http://localhost/phppgadmin/

Création d'une base de données

Remarque : utilisez de préférence l'outil pgsql-tools.

Nous allons maintenant créer une base de données avec un utilisateur capable de l'administrer. En premier lieu, configurez le nom de votre base de données :

PGSQL_DB=MA_BASE

Nous configurons maintenant l'utilisateur habilité à administrer la base de données :

PGSQL_USERNAME=$(/bin/echo $PGSQL_DB|/usr/bin/tr '[A-Z]' '[a-z]')
PGSQL_USERPWD=$(/usr/bin/apg -q -a  0 -n 1 -M NCL)

Nous affichons l'identifiant et le mot de passe de l'utilisateur pour la base de données :

echo "L'utilisateur habilité pour la base de donnée '$PGSQL_DB' est '$PGSQL_USERNAME' avec le mot de passe '$PGSQL_USERPWD'."

Attention: Notez les informations affichées et conservez les précieusement !

Enfin, nous créons l'utilisateur et réglons ses habilitations.

/bin/su postgres -c "/usr/bin/createuser --no-superuser \
      --no-createdb --no-createrole --login ${PGSQL_USERNAME}"
/bin/su postgres -c "/usr/bin/psql -c \"ALTER USER ${PGSQL_USERNAME} PASSWORD '${PGSQL_USERPWD}';\""

Nous créons ensuite la base de données :

/bin/su postgres -c "/usr/bin/createdb --encoding UTF8 \
    --owner ${PGSQL_USERNAME} ${PGSQL_DB}"

Vous pouvez maintenant créer  et utiliser votre base de données avec cet utilisateur. Nous pourrions aller plus loin en créant un utilisateur supplémentaire ne disposant pas des droit de création et suppression des tables et pouvant donc uniquement modifier le contenu des tables.

Remerciements

Attachements

la commande command

Posté par yan le 18/01/2013 11:41
Bonjour,

Merci de toutes ces pages si utiles!
Une petite question, c'est quoi la commande "command"?
Comment l'installer sous debian? je ne trouve rien via google, command c'est un peu trop générique...
Merci d'avance

Yan

command

Posté par Pierre-Yves Landuré le 18/01/2013 12:20
Bonjour,

command est une fonctionnalité de bash qui fait appel directement au binaire en ignorant les alias. Ainsi, même si un alias existe telque ls = "ls --color=auto", command ls ignore cet alias et lance /bin/ls.

Vous pouvez supprimer command des lignes si cette fonctionnalité n'est pas présente dans votre shell. (pouvez-vous préciser le shell utilisé ?).

de plus, ce guide a été mis à jour à l'adresse: http://howto.biapy.com/fr/debian-gnu-linux/serveurs/bases-de-donnees/installer-postgresql-sur-debian

Sincèrement,
Pierre-Yves Landuré

Command "command"

Posté par Yan le 20/01/2013 22:16
Merci de votre réponse,

mon shell est bash, que manisfestement je ne connais pas encore à fond (malgré de longues années de pratique...).
Merci aussi pour le lien que j'avais déjà "bookmarké" il y a quelque jours. Je viens d'installer WHeezy sur une machine,et je découvre Postgres que j'envisage utiliser en remplacement de MySQL.
Pour info, le bash de Wheezy reconnait command, celui de Squeeze non sauf après une mise à jour forcée du bash par défaut.
Encore merci pour tous vos mémos.

Yan

command

Posté par Richard le 03/05/2016 06:19
Excellent tutoriel. Moi, j’ai trouvé intéressant aussi les vidéos sur http://www.alphorm.com/tutoriel/formation-en-ligne-postgresql-administration pour l’installation de PostgreSQL sous Linux et Windows. En tout cas merci pour ce partage.

BlogBang
Navigation
 

Réalisé avec Plone

Ce site respecte les normes suivantes :

Wikio