{"id":524,"date":"2012-11-18T13:44:19","date_gmt":"2012-11-18T12:44:19","guid":{"rendered":"http:\/\/almin.tf\/blog\/?p=524"},"modified":"2026-01-24T01:16:44","modified_gmt":"2026-01-24T00:16:44","slug":"heberger-postgresql","status":"publish","type":"post","link":"https:\/\/almic.fr\/blog\/2012\/11\/18\/heberger-postgresql\/","title":{"rendered":"H\u00e9berger un serveur PostgreSQL"},"content":{"rendered":"<p style=\"text-align: justify;\">Voici quelques manipulations de base pour d\u00e9marrer avec PostgreSQL. Je m\u2019adresse \u00e0 ceux qui savent ce qu\u2019est une base, une table\u2026 et qui souhaitent prendre en main leur h\u00e9bergement.<\/p>\n<p style=\"text-align: justify;\">Ce tutoriel a \u00e9t\u00e9 tenu \u00e0 jour jusqu\u2019au <b>13 ao\u00fbt 2016<\/b>.<\/p>\n<p><!--more--><\/p>\n<p style=\"text-align: justify;\">Je n\u2019ai utilis\u00e9 PostgreSQL que sous Debian, mais j\u2019imagine que ce que je d\u00e9cris ici doit s\u2019adapter aux autres distributions sans trop de diff\u00e9rences.<\/p>\n<p style=\"text-align: justify;\">Les commandes pr\u00e9fix\u00e9es d\u2019un # sont \u00e0 lancer en root. Les commandes pr\u00e9fix\u00e9es d\u2019un % sont \u00e0 lancer en simple utilisateur.<\/p>\n<h4>Installation<\/h4>\n<p style=\"text-align: justify;\">On commence par installer PostgreSQL :<\/p>\n<p><code># apt-get install postgresql postgresql-client<\/code><\/p>\n<p style=\"text-align: justify;\">Il faut ajuster les r\u00e9glages de la m\u00e9moire partag\u00e9e. Modifiez <i>\/etc\/sysctl.d\/30-postgresql-shm.conf<\/i> :<\/p>\n<pre># Maximum size of shared memory segment in bytes\nkernel.shmmax = 151798690\n# Maximum total size of shared memory in pages (normally 4096 bytes)\nkernel.shmall = 2097152<\/pre>\n<p style=\"text-align: justify;\">Pour \u00e9viter de red\u00e9marrer le syst\u00e8me, vous pouvez faire :<\/p>\n<p><code># sysctl -w kernel.shmmax=151798690<br \/>\n# sysctl -w kernel.shmall=2097152<br \/>\n# service postgresql restart<\/code><\/p>\n<p style=\"text-align: justify;\">Si vous faites tourner PostgreSQL dans un conteneur OpenVZ, il faut \u00e9diter le fichier <i>\/etc\/vz\/conf\/1XX.conf<\/i> correspondant au conteneur, pour changer ces param\u00e8tres :<\/p>\n<pre>KMEMSIZE=\"unlimited\"\nLOCKEDPAGES=\"unlimited\"\nPRIVVMPAGES=\"unlimited\"\nSHMPAGES=\"unlimited\"\nOOMGUARPAGES=\"unlimited\"<\/pre>\n<h4>Les mises \u00e0 jour<\/h4>\n<p style=\"text-align: justify;\">La compatibilit\u00e9 du format de cluster n\u2019est pas garantie d\u2019une version de PostgreSQL \u00e0 l\u2019autre, et lors des mises \u00e0 jour les clusters ne sont pas convertis. Il faut le faire manuellement.<\/p>\n<p style=\"text-align: justify;\">Voici les commandes pour passer de la version de wheezy (9.1) \u00e0 celle de jessie (9.4) :<\/p>\n<p><code># pg_dropcluster 9.4 main --stop<br \/>\n# pg_upgradecluster 9.1 main<br \/>\n# service postgresql restart<\/code><\/p>\n<p style=\"text-align: justify;\">Mais je vous recommande de lire <i>\/usr\/share\/doc\/postgresql-common\/README.Debian.gz<\/i> et la manpage de <i>pg_upgradecluster<\/i> pour comprendre ce que vous faites. Et, bien entendu, faites une sauvegarde de vos bases avant toute op\u00e9ration de maintenance.<\/p>\n<h4>Les manipulations en CLI<\/h4>\n<p style=\"text-align: justify;\">Pour les manipulations en ligne de commande, \u00e9ditez <i>\/etc\/postgresql\/X.Y\/main\/pg_hba.conf<\/i>, commentez la ligne d\u00e9j\u00e0 pr\u00e9sente pour l\u2019utilisateur postgres, et ins\u00e9rez cette ligne \u00e0 la place :<\/p>\n<pre>local   all         postgres                          trust<\/pre>\n<p style=\"text-align: justify;\">Puis red\u00e9marrez PostgreSQL :<\/p>\n<p><code># service postgresql restart<\/code><\/p>\n<p style=\"text-align: justify;\">Une fois que vous aurez fini vos manipulations, il faudra annuler ce changement.<\/p>\n<h4>Les acc\u00e8s<\/h4>\n<p style=\"text-align: justify;\">Pour changer le mot de passe d\u2019un r\u00f4le :<\/p>\n<p><code># psql -U postgres<br \/>\npsql (version)<br \/>\nSaisissez \u00ab help \u00bb pour l'aide.<br \/>\npostgres=# ALTER USER '_Nom_r\u00f4le_' PASSWORD '_Nouveau_mdp_';<\/code><\/p>\n<p style=\"text-align: justify;\">Pour changer le nom d\u2019un r\u00f4le :<\/p>\n<p><code># psql -U postgres<br \/>\npostgres=# ALTER USER '_Nom_r\u00f4le_' RENAME TO '_Nouveau_nom_';<\/code><\/p>\n<p style=\"text-align: justify;\">Pour cr\u00e9er un r\u00f4le admin :<\/p>\n<p><code># su postgres -c \"createuser -s -d -r -P -E _Nom_r\u00f4le_\"<\/code><\/p>\n<p style=\"text-align: justify;\">Pour supprimer un r\u00f4le :<\/p>\n<p><code># psql -U postgres<br \/>\npostgres=# DROP ROLE '_Nom_r\u00f4le_';<\/code><\/p>\n<p style=\"text-align: justify;\">Pour changer le r\u00f4le auquel une base appartient :<\/p>\n<p><code># psql -U postgres<br \/>\npostgres=# ALTER DATABASE '_Nom_base_' OWNER TO '_Nom_r\u00f4le_';<\/code><\/p>\n<h4>Cas d\u2019usage : phpBB 3<\/h4>\n<p style=\"text-align: justify;\">J\u2019ai install\u00e9 phpBB pour une association. Comme le serveur \u00e9tait bien charg\u00e9, j\u2019ai pr\u00e9f\u00e9r\u00e9 \u00e9viter le classique MySQL : il n\u2019\u00e9tait pas install\u00e9, alors que PostgreSQL \u00e9tait d\u00e9j\u00e0 l\u00e0. Voil\u00e0 quelques manips que j\u2019ai eu \u00e0 faire.<\/p>\n<p style=\"text-align: justify;\">Il faut ajouter la ligne suivante dans <i>\/etc\/postgresql\/X.Y\/main\/pg_hba.conf<\/i> :<\/p>\n<pre>local   phpbb3      phpbb3                            md5<\/pre>\n<p style=\"text-align: justify;\">Cette ligne doit \u00eatre plac\u00e9e avant la ligne d\u00e9crivant la m\u00e9thode de connexion (md5, ou ident, ou trust\u2026) employ\u00e9e par d\u00e9faut pour un type de connexion (local, ou host, ou hostssl\u2026). C\u2019est-\u00e0-dire pour tous les utilisateurs qui n\u2019ont pas \u00e9t\u00e9 mentionn\u00e9s dans les lignes pr\u00e9c\u00e9dentes. Si ce passage n\u2019est pas clair, r\u00e9f\u00e9rez-vous \u00e0 <i>\/usr\/share\/doc\/phpbb3\/README.postgresql<\/i> et aux commentaires au d\u00e9but du fichier <i>\/etc\/postgresql\/X.Y\/main\/pg_hba.conf<\/i>.<\/p>\n<p style=\"text-align: justify;\">Pour les mises \u00e0 jour du paquet phpbb3, il faut modifier le shell de l\u2019utilisateur syst\u00e8me postgres, \u00e0 cause d\u2019un bug dans dbconfig-common. Avant de lancer apt-get, \u00e9ditez <i>\/etc\/passwd<\/i> pour mettre \u00ab \/bin\/sh \u00bb \u00e0 la place de \u00ab \/bin\/false \u00bb. Une fois la mise \u00e0 jour termin\u00e9e, annulez ce changement.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voici quelques manipulations de base pour d\u00e9marrer avec PostgreSQL. Je m\u2019adresse \u00e0 ceux qui savent ce qu\u2019est une base, une table\u2026 et qui souhaitent prendre en main leur h\u00e9bergement. Ce tutoriel a \u00e9t\u00e9 tenu \u00e0 jour jusqu\u2019au 13 ao\u00fbt 2016.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-524","post","type-post","status-publish","format-standard","hentry","category-hebergement","radius"],"_links":{"self":[{"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/posts\/524","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/comments?post=524"}],"version-history":[{"count":5,"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/posts\/524\/revisions"}],"predecessor-version":[{"id":766,"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/posts\/524\/revisions\/766"}],"wp:attachment":[{"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/media?parent=524"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/categories?post=524"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/tags?post=524"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}