Documentation du Dr FRAPPE

Ce wiki regroupe les résultats de mes expériences en informatique accumulés au cours de mes recherches sur le net.

Dans la mesure du possible, j'ai cité mes sources ; il en manque certainement… :-)

PostGreSQL sur un Raspberry Pi : une base de données SQL

Introduction

Pré-requis

  • Sur un Raspberry Pi :
    • le Raspberry Pi doit être accessible en local 1) ou sur internet (http://monsite.tld)
    • et un serveur LLSP 2) tourne dessus.

Installation

 Installation de PostgreSQL

Nous sommes sur le Raspberry Pi via ssh (ou dans une console).

Sur le Raspberry Pi, installez postgresql en lançant :

$ sudo apt-get update
$ sudo apt-get install postgresql

Acceptez d'installer tous les paquets 3).

Après un certain temps, il s'affiche :

Un utilisateur système postgres a été créé. Il n'a pas de mot de passe : c'est un utilisateur bloqué et le mieux est qu'il le reste.

utilisateur postgres Au départ, toutes les opérations d'administration se font donc avec l'utilisateur postgres qui seul peut se connecter.

Pour vous connecter en tant qu'utilisateur postgres, utilisez la commande :

$ sudo -i -u postgres

L'invite de commande mentionne que vous êtes actif en tant que postgres :

A la fin de cette session d'administration dans PostgreSQL, il suffira de taper

$ exit

pour reprendre la main en tant qu'utilisateur du système.

On peut aussi lancer une commande (ici psql) en tant que postgres :

$ sudo -u postgres psql

Dès que cette commande se termine, on se retrouve avec l'utilisateur habituel.

Le serveur PostgreSQL est en place.

Configuration

Création d'un nouvel utilisateur pour gérer postgresql

Nous allons créer l'utilisateur qui nous permettra de gérer postgresql.

Pour cela, lancez l'outil d'administration de PostgreSQL en tant qu'utilisateur postgres :

$ sudo -u postgres psql

Vous êtes dans une interface en ligne de commande, en tant que root (# en bout de ligne).

Pour créer un environnement plus sûr, créez un rôle pour l'administration, avec toutes les autorisations sauf l'héritage des droits :

$ CREATE ROLE <admin> LOGIN ENCRYPTED PASSWORD '<mot_de_passe>' SUPERUSER NOINHERIT CREATEDB CREATEROLE;
<admin>
nom d'utilisateur

; <mot_de_passe>

mot de passe

N'oubliez pas le point-virgule en fin de ligne ! </WRAP> Quittez l'environnement psql :

$ \q

Vérifiez en essayant de vous connecter avec l'utilisateur que vous venez de créer :

$ sudo -i -u postgres

Installation de l'interface web PhpPgAdmin

L'interface web PhpPgAdmin pour PostgreSQL simplifie la mise en place et l'administration.

Installez le paquet :

$ sudo apt install phppgadmin

Éditez avec les droits d'administration le fichier /etc/lighttpd/lighttpd.conf pour ajouter la ligne suivante à la fin du fichier :

/etc/lighttpd/lighttpd.conf
...
alias.url += ( "/phppgadmin" => "/usr/share/phppgadmin/")

Ainsi, l'adresse http://monsite.tld/phppgadmin pointe sur le bon répertoire interne.

Dans le fichier /etc/lighttpd/lighttpd.conf, assurez-vous que le module mod_alias est activé (dé-commenté)

et activez les modules mod_fastcgi et mod_cgi :

$ sudo lighty-enable-mod fastcgi cgi

Redémarrez le serveur :

$ sudo service lighttpd restart

Allez à la page de phpPgAdmin : http://monsite.tld/phppgadmin

Cliquez sur PostgreSQL sur le côté gauche.

Dans la fenêtre de connexion, entrez le nom et le mot de passe de l'utilisateur créé plus haut pour gérer postgresql. Cela devrait vous connecter

Pour ajouter un rôle (utilisateur)

Cliquez sur rôles dans la zone du milieu en haut de la page

Cliquez sur Créer Rôle

Créer nom d'utilisateur / mot de passe et donner toutes les autorisations autres que privilèges Inherits.

Ignorer les autres options dans les cases à cocher

Cliquez sur Créer

Sous Apache

Installez le paquet :

$ sudo apt-get install phppgadmin

Ajouter la directive :

# Mes alias
Alias /phppgadmin /usr/share/phppgadmin/ 
Sécurisation de l'interface web

Nous allons maintenant configurer un utilisateur pour l'interface Web.

Pour cela, il faut d'abord retirer les sécurités. éditez avec les droits d'administration le fichier /usr/share/phppgadmin/conf/config.inc.php pour mettre la ligne suivante à false :

/usr/share/phppgadmin/conf/config.inc.php
$conf['extra_login_security'] = false;

Il faut encore modifier l'utilisateur postgres pour lui donner un mot de passe.

Lancer :

$ sudo -u postgres psql

Au prompt, exécuter :

$ ALTER USER postgres password 'Mot_DE_PASSE';

et quitter par

$ \q

Arborescence
  • fichiers de configuration : dans /etc/postgresql/[VERSION]/main/ :
    • environment
    • postgresql.conf
    • pg_hba.conf
    • pg_ident.conf
    • start.conf
  • Les données se trouveront dans “/var/lib/postgresql/[VERSION]/main”

Pour déplacer le répertoire des données, éditer la ligne suivante du fichier postgresql.conf :

data_directory = ...

Le répertoire des données doit appartenir à “postgres:postgres” :

$ sudo chown postgres:postgres -R repertoiredata

Le port par défaut se configure dans le fichier postgresql.conf.

Sécurisation

Maintenant, allez à la page de phpPgAdmin : http://framboise.local/phppgadmin/.

  • Choisir la langue française.
  • Cliquez sur PostgreSQL sur le côté gauche pour charger le serveur. Pour la connexion,
    • Utilisateur : postgres
    • Mot de passe : mot de passe défini ci-dessus
    • → Cela vous connecte.

Nous allons maintenant créer un nouveau compte d'utilisateur qui peut accéder à l'interface de phpPgAdmin en toute sécurité.

En effet pour l'instant, n'importe qui peut se connecter en utilisant le mot de passe avec l'utilisateur postgres.

Pour créer un environnement plus sûr

  • Cliquez sur Rôles dans la zone du milieu en haut de la page
  • Cliquez sur Créer un rôle
  • Créez un nom d'utilisateur/mot de passe et donnez-lui toutes les autorisations autres que “Hérite des droits”. Ignorez les autres options dans les cases à cocher
  • Cliquez sur Créer
  • Cliquez sur Déconnexion en haut à droite de la page

Maintenant que vous êtes déconnecté, Essayez de vous connecter avec l'utilisateur que vous venez de créer : Vous devez y arriver.

Il est temps de re-sécuriser notre serveur. éditez avec les droits d'administration le fichier /usr/share/phppgadmin/conf/config.inc.php pour mettre la ligne suivante à true :

/usr/share/phppgadmin/conf/config.inc.php
$conf['extra_login_security'] = true;

C'est tout! Vous avez maintenant une page de phpgaadmin sécurisé et une interface agréable pour configurer votre serveur PostgreSQL.

Utilisation

Aide-mémoire de psql

Voir :

Petit guide de survie pour le client psql

\h
pour l'aide-mémoire des commandes SQL

; \?

pour l'aide-mémoire des commandes psql

; \g ou point-virgule en fin d'instruction

pour exécuter la requête

; \q

pour quitter

</WRAP>

Désinstallation

Voir aussi


Basé sur « Article » par Auteur.

1)
par exemple sur http://framboise.local avec avahi
2)
lighttpd + php + SQLite
3)
les paquets supplémentaires suivants vont être installés : libpq5, lsb-release, postgresql-9.1, postgresql-client-9.1, postgresql-client-common, postgresql-common,,ssl-cert