Postgresql

De Avided.info
Aller à : navigation, rechercher


Postgresql est un serveur de base de donnée.

Cas specifiques

Postgresql pour tinyerp - SQL

Postgresql Configuration server General

Pour démarrer :

Je n'explique pas l'installation de postgresql, il est livré avec la plupart des distributions et un gand nombre de sites traite de son installation. 

Il est basé sur plusieurs fichiers de configurations. Mais ceux-ci ne se trouvent pas dans le repertoir habituel des fichiers de configurations.

selon la distribution le chemin peut varier, mais ils sont souvent dans l'un des chemins suivants Fedora 4

/var/lib/pgsql/data

Debian 3.1

/var/lib/postgres/data

ubuntu 8.04

/etc/postgresql/8.3/main

  Il est important de connaître le  nom d'utilisateur qui execute le serveur postgresql.
Dans beaucoup de distributions il s'agit de "postgres". Il vous sera utilie lors de la première connection au serveur. Après rien ne vous empeche de créer un nouvel adminstrateur de postgresql. En verifiant le proprietaire du  prcessus portant le nom de postgres ou postmaster

ps -aux gres postgres
postgres   792  0.0  1.9 17440 2548 ?        S    Feb06   0:00 /usr/lib/postgresql/bin/postmaster -D /var/lib/postgres/data  

Les fichier de conf 'pg_hba.conf'

# Permet à n'importe quel utilisateur du système local de se connecter à la base
# de données sous n'importe quel nom d'utilisateur en utilisant les sockets du
# domaine Unix. (par défaut pour les connexions locales)
#
# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
local all all trust

# Identique à ci-dessus mais utilise les connexions TCP/IP locales loopback.
#
# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
host all all 127.0.0.1 255.255.255.255 trust

# Identique à la dernière ligne mais en utilisant un masque CDIR.
#
# TYPE DATABASE USER IP-ADDRESS/CIDR-mask METHOD
host all all 127.0.0.1/32 trust

# Permet à n'importe quel utilisateur de n'importe quel hôte avec l'adresse IP
# 192.168.93.x de se connecter à la base de données "template1" sous le même nom
# d'utilisateur que l'identification le signale à la connexion (généralement le
# nom utilisateur Unix).
#
# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
host template1 all 192.168.93.0 255.255.255.0 ident
sameuser

# Identique à la ligne précédente mais en utilisant un masque CDIR.
#
# TYPE DATABASE USER IP-ADDRESS/CIDR-mask METHOD
host template1 all 192.168.93.0/24 ident sameuser

# Permet à un utilisateur de l'hôte 192.168.12.10 de se connecter à la base de
# données "template1" si le mot de passe de l'utilisateur est fourni sans
# erreur.
#
# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
host template1 all 192.168.12.10 255.255.255.255 md5

# En l'absence de lignes "host" antérieures, ces deux lignes rejetteront toutes
# les connexions en provenance de 192.168.54.1 (puisque cette entrée déclenchera
# en premier), mais autorisera les connexions Kerberos V de n'importe où
# ailleurs sur l'Internet. Le masque zéro signifie qu'aucun bit sur l'ip de
# l'hôte n'est considéré, de sorte à correspondre à tous les hôtes.
#
# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
host all all 192.168.54.1 255.255.255.255 reject host
all all 0.0.0.0 0.0.0.0 krb5

# Permet à tous les utilisateurs de se connecter depuis 192.168.x.x à n'importe
# quelle base de données si ils passent la verification d'identification. Si,
# par exemple, l'identification indique que l'utilisateur est "bryanh" et qu'il
# demande à se connecter en tant qu'utilisateur PostgreSQL "guest1", la
# connexion n'est permise que s'il existe une entrée dans pg_ident.conf pour la
# correspondance "omicron" disant que "bryanh" est autorisé à se connecter en
# tant que "guest1".
#
# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
host all all 192.168.0.0 255.255.0.0 ident
omicron

# Si ce sont les trois seules lignes traitant les connexions locales, elles
# autoriseront les utilisateurs locaux à se connecter uniquement à leur propre
# base de données (bases de données ayant le même nom que leur nom
# d'utilisateur) exception faite pour les administrateurs et les membres du
# groupe "support" qui peuvent se connecter à toutes les bases de données. Le
# fichier $PGDATA/admins contient une liste de noms d'utilisateurs. Un mot de
# passe est requis dans tous les cas.
#
# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
local sameuser all md5 local
all @admins md5 local all
+support md5

# Les deux dernières lignes ci-dessus peuvent être combinées en une seule ligne:
local all @admins,+support md5

# La colonne database peut aussi utiliser des listes et des noms de fichiers
mais pas de groupes:
local db1,db2,@demodbs all md5


postgresql.conf : Afin d'utiliser postgresql en réseau il est necessarie d'editer ce fichier est d'effectuer les changement en fonction de la version que vous utilisez Verssion 7.x

tcpip_socket = true
Verssion au - 8.0.5
listen_addresses * 

Connexion au serveur

  • Pour ce connecter le nom d'une base est obligatoire, vous pouvez utiliser la base template1.
psql nom_de_la_base
  • liste les base existante sur le serveur.
psql -l

creer une base

createdb mabase
  • creer une base pour un autre créateur
createdb -E unicode -U nom-createur nom_base
  • creer une base pour un utilisateur standard et le rendre propriétaire.
createdb -E unicode -U user base
  • changer le proprietaire d'une base
ALTER DATABASE base_name OWNER TO user_name;
  • Creer une base de donnée en modifiant le propriétaire
CREATE DATABASE nom_base_de_donne WITH ENCODING 'UTF8' OWNER nom_user;

suprimer une base

dropedb mabase

créer un utilisateur

    • en SQL
CREATE USER nom_user;
    • depuis le shell
createuser nom_user
  • creer un utilisateur pourvant créer des utilisateur.
CREATE USER nom_utilisateur CREATEUSER;
  • creer un user ayant le droit de creer des base
CREATE USER nom_utilisateur CREATEDB;
  • Creer un super user
CREATE USER nom_utilisateur SUPERUSER;
  • creer un user avec un mot de passe au user
CREATE USER nom_utilisateur PASSWORD 'le_mot_de_passe';
  • changer ou attribuer un mot de passe cripté a un user
ALTER USER nom WITH ENCRYPTED PASSWORD 'mdp';

supprimer un utilisateur

DROP USER nom_user; en SQL
dropuser nom_user depuis le shell

LES GROUPES

  • creer un groupe
CREATE GROUP nom_groupe;
  • Ajouter et supprimer des user au groupe
ALTER GROUP nom_group ADD USER nom_utilisateur_1, ... ;
ALTER GROUP nom_group DROP USER nom_utilisateur_1, ... ;