Styles

lundi 6 avril 2015

Installation de PostgreSQL sous OpenBSD et utilisation de psql sous Windows pour y accéder

Cet article montre comment ne pas se fatiguer avec la gestion de l'encodage des caractères entre des serveurs et clients très différents.

Sous OpenBSD

- installer le package postgresql-server
- lire le fichier et exécuter les instructions pour créer le répertoire de données :
more /usr/local/share/doc/pkg-readmes/postgresql-server-9.3.4p0
se connecter en root :
su -
puis se connecter avec _postgresql pour créer le répertoire de données:
su - _postgresql
mkdir /var/postgresql/data
initdb -D /var/postgresql/data -U postgres -E LATIN9 -A md5 -W
exit
Ce qui est important dans ces commandes c'est LATIN9 qui sera à utiliser dans l'appel à psql sous Windows pour s'assurer que ça fonctionne bien entre les deux systèmes.

Editer /var/postgresql/data/postgresql.conf:
listen_addresses = '*'

Editer /var/postgresql/data/pg_hba.conf:
host    all             all             0.0.0.0/0               md5

Pour démarrer/redémarrer/arrêter la base de données à partir du compte root:
/etc/rc.d/postgresql start
/etc/rc.d/postgresql restart
/etc/rc.d/postgresql stop
Pour démarrer/arrêter automatiquement postgresql au démarrage et arrêt de la machine, ajouter postgresql à la variable pkg_scripts dans /etc/rc.conf.local :
pkg_scripts="postgresql"
Tous les services doivent être séparés par un espace dans cette variable, comme par exemple pkg_scripts="postgresql service2 service3" où chaque entrée doit être dans /etc/rc.d/

psql sous windows pour accéder à un serveur postgresql sous unix

Installez PostgreSQL sous windows pour disposer de psql. Créer un fichier psqlopenbsd.bat :
@@echo off
set PGCLIENTENCODING=LATIN9
chcp 1252 > nul
set PSQLRC=d:\jrx\jrxemacs\.psqlrc
"c:\Program Files\PostgreSQL\9.3\bin\psql.exe" -h adresse_ip -U postgres postgres
en remplaçant adresse_ip par l'adresse ip du serveur, en s'assurant que PGCLIENTENCODING correspond à l'encoding des data du serveur (encoding utilisé lors de la création de la base de données avec initdb).

Aucun commentaire: