Chapitre 1 Cygwin PostgreSQL PostgreSQL existe essentiellement sous Linux. Un portage a été réalisé sous Windows. Il s agit de Cygwin PostgreSQL. Le fonctionnement est à peu près identique dans les deux environnements. 1.1 Installation de PostgreSQL 1.1.1 Téléchargement des packages Cygwin Sur le site de Cygwin à l adresse http://www.cygwin.com, en cliquant sur l image Install Cygwin now, on télécharge le fichier setup.exe dans un répertoire C:\cygwin_download. Ensuite, lorsque l on exécute ce setup.exe, une fenêtre s ouvre et on a trois possibilités : Install from Internet, Download from Internet, Install from Local Directory ; En choisissant la deuxième option, on téléchargera les packages par exemple dans le répertoire C:\cygwin_download. Plusieurs fenêtres vont successivement s ouvrir jusqu au choix d un site de téléchargement. Puis on arrive sur une dernière fenêtre où l on va pouvoir sélectionner les packages. Lorsque l on clique sur la ligne d un package donné, on a le choix entre : le numéro de version, ce qui indique qu il est sélectionné, source pour télécharger le source, skip (passer) ce qui indique qu il n est pas sélectionné ; Si l on avait déjà téléchargé des packages, pour ceux-ci, on aurait eu : keep (garder) ce qui indique qu on le garde, retrieve (rapporter) ce qui indique qu on le supprime, source pour télécharger le source ; Voici la liste des packages à télécharger : ash bash bzip2 crypt cygrunsrv cygwin fileutils grep less libncurses6 ncurses libintl1 pcre postgresql readline sed sh-utils tar textutils 1
1.1.2 Installation des packages Cygwin On exécute à nouveau le fichier setup.exe mais cette fois-ci, on choisit d installer à partir du répertoire local tous les packages précédents. On fera cette installation dans C:\cygwin. On aura ainsi un raccourci sur le bureau ainsi qu un menu pour accéder au Cygwin Bash Shell. 1.1.3 Téléchargement et installation de cygipc On va à l adresse suivante : http://www.neuro.gatech.edu/users/cwilson/cygutils/cygipc/index.html La, on télécharge un fichier appelé cygipc, actuellement cygipc-1.11-1.tar.bz2. On le place dans le répertoire C:\cygwin. On ouvre ensuite le Cygwin Bash Shell et on se place dans le répertoire racine de C:\cygwin en tapant deux fois de suite cd... On le décompresse par la commande bunzip2 cygipc-1.11-1.tar.bz2. On obtient alors un fichier d archives que l on désarchive par tar -xvf cygipc-1.11-1.tar 1.2 Configuration de PostgreSQL On ouvre le Cygwin Bash Shell et on procède de la manière suivante : 1. On lance le démon ipc en tapant ipc-daemon & 2. On initialise PostgreSQL en tapant : 3. On démarre le serveur en tapant : initdb -D /usr/share/postgresql/data postmaster -D /usr/share/postgresql/data -i & Il est à noter que l option -i doit être spécifiée pour accepter les connections TCP/IP. A la place de l option -i, on peut modifier le fichier de configuration postgresql.conf du répertoire data en remplaçant #tcpip_socket=false par tcpip_socket=true. On peut également démarrer le serveur en tapant : 4. On arrête le serveur en tapant : pg_ctl -D /usr/share/postgresql/data start pg_ctl -D /usr/share/postgresql/data stop 1.3 Installation de PostgreSQL comme services NT Sous Windows NT, 2000 ou XP, on peut installer le serveur PostgreSQL comme service. En se connectant comme administrateur, il faut effectuer les tâches suivantes : 1. Ajouter à la variable d environnement système PATH le répertoire C:\cygwin\bin. Ceci est indispensable pour trouver la dll cygwin1.dll 2. Installer le démon ipc-daemon comme service en tapant : ipc-daemon --install-as-service 2
3. Créer un utilisateur postgres à l aide du panneau de configuration ou en tapant : Puis définir le mot de passe : cmd /c lusrmgr.msc mkpasswd -l -u postgres >>/etc/passwd 4. Donner à postgres le droit d ouvrir une session en tant que service à l aide du panneau de configuration ou en tapant : cmd /c secpol.msc 5. Rendre postgres propriétaire du répertoire data : chown postgres /usr/share/postgresql/data 6. Installer le postmaster comme service : cygrunsrv --install postmaster --path /usr/bin/postmaster --args "-D /usr/share/postgresql/data -i" --dep ipc-daemon --termsig INT --user postgres --shutdown 7. Démarrer le service ipc-daemon : 8. Démarrer le service postmaster : net start ipc-daemon net start postmaster 1.4 Une première utilisation de PostgreSQL Dans la plupart des SGBD Relationnels, il y a un administrateur du serveur (DBA). Avec PostgreSQL sous Linux, il s agit de l utilisateur postgres. Sous ce compte, on peut créer et supprimer des bases de données et des utilisateurs. Avec PostgreSQL sous Windows, il s agit de celui qui a fait l installation. Il existe aussi une notion de propriétaire (DBO) de base de données. Il peut créer et supprimer des tables et gérer les droits des utilisateurs sur cette base de données. Le DBO est bien sûr celui qui a créé la base de données. 1.4.1 Création et suppression d un utilisateur On peut utiliser la commande createuser, éventuellement avec l option -P qui permet de spécifier le mot de passe de l utilisateur. Voici un exemple des séquences obtenues : createuser etudiant is the new user allowed to create databases? (y/n) y shall the new user be allowed to create more new users? (y/n) n CREATE USER Pour supprimer un utilisateur, on utilise la commande dropuser 1.4.2 Création et suppression d une base de données On peut utiliser la commande createdb, éventuellement avec l option -U pour préciser le nom du propriétaire et l option -E pour l encodage. Exemple : 3
createdb -E LATIN1 demo CREATE DATABASE Pour supprimer une base de données, onutilise la commande dropdb 1.4.3 Connexion à une base de données On utilise psql qui est un interpréteur en ligne de commandes. Par exemple, pour se connecter à la base demo, on tapera psql demo. Il y a deux types de commandes : les requêtes en langage SQL les commandes qui commencent par \ Voici quelques exemples. (On rappelle que l on s est connecté à demo par psql demo) : \l liste des bases de données du serveur \d liste des tables de la base de données (ici demo) \d nom_table liste des champs de la table nom table \z liste des droits des utilisateurs sur les tables de la base \g nom_fichier indique que le résultat de la requête suivante sera sauvegardé dans le fichier nom fichier \i req.sql exécute la ou les requêtes SQL enregistrées dans le fichier req.sql \q pour se déconnecter de la base de données 1.4.4 Sauvegarde et restauration d une base de données Pour sauvegarder une base de données dans un fichier d archives (.tar) : pg_dump -Ft nom_base > fichier.tar Pour restaurer une base de données à partir de l archive : pg_restore -d nom_base fichier.tar Remarque : si nom_base a été supprimée, il faut d abord la créer avant de la restaurer. 1.4.5 Gestion des droits des utilisateurs Pour gérer les droits des utilisateurs sur une base de données, on se connecte à celle-ci puis on utilise la commande SQL GRANT sur SELECT, INSERT, UPDATE, DELETE. Supposons que l on ait par exemple une table invites et un utilisateur etudiant. On pourrait avoir : GRANT SELECT ON invites TO etudiant ; Pour supprimer des droits, on utilise REVOKE. Remarque : pour gérer les droits, on a intérêt à créer des groupes (CREATE GROUP) puis y ajouter des utilisateurs. De cette manière, on accordera les droits au groupe, ce qui simplifie le travail. 4
1.5 pgadmin II pgadmin II est un outil particulièrement bien fait qui permet d administrer PostgreSQL, de créer des bases, des tables, d interroger, etc... On peut même installer un plugin nommé pgmigration pour importer des bases Access et SQL Server par exemple. Cet outil se trouve à l adresse suivante : http://pgadmin.postgresql.org Il contient également la documentation sur PostgreSQL. 1.6 Jdbc Il existe bien sûr un driver jdbc. C est un driver de type 4, compatible JDBC2.0. On le trouve à l adresse : 1.7 Conclusion http://jdbc.postgresql.org C est un excellent produit. La documentation est très bien faite. Il mérite vraiment de s y attarder. 5