| Qui est en ligne ? |
| Il y a : 19 utilisateurs en ligne, consultez le détail |
Forum » Documentation Linux » PostgreSQL |
Forum modéré par : Jul |
| Même auteur |
|
Score ( voter ) : ![]() ![]()
|
|
| Page : [1] |
| Auteur | Message | |||
|---|---|---|---|---|
|
|
#0 Message posté le : 13-12-2005 à 08:10:23 | |||
Elfe Forum : Modérateur Association : Membre actif Arrivé(e) le : 16-01-2003 Nombre de messages : 3699 |
1. Introduction ,qu'est ce postgre ? :PostgreSQL est ce que l'on appelle un SGDB (système de gestion de base de données),est un logiciel capable d'enregistrer et conserver des informations (numérique) et de les restituer à la demande d'un utilisateur. Les concurrents de postgreSQL les plus courants sont oracle, sybase, informix, interbase etc...,mais l'avantage de PostgreSQL par rapport aux autres SGDB est sa gratuité , alors que des systèmes tel qu'oracle ne sont abordable que par de très grosse société. PostgreSQL est toutefois un peu plus rudimentaire que ses compagnons qui possèdent énormément d'outils d'aide à l'utilisation ou développement. Il possède toutefois leurs caractéristiques principales et essentielles. Le site officiel de PostgreSQL 2. Installation :2.1 Pré-requis :J'ai testé postgreSQL sur Red hat 7.3, les outils nécessaires sont :
2.2 Installation depuis les sources :téléchargez les sources ici. Téléchargez la version la plus à jour. Enregistrez-la dans un dossier provisoire par ex: /tmp/postgre/. Pour décomprésser l'archive, tapez :
cd /tmp/postgre/ tar -xzvf postgresql-7.3.2tar.gz Pour l'installer, tapez:
cd postgresql-7.3 ./configure --prefix=/usr --mandir=/usr/share/man --libdir=/usr/lib --enable-syslog --enable-depend --with-gnu-ld --with-maxbackends=1024 --with-tcl --with-python --with-perl --enable-locale --enable-nls --enable-multibyte --with-CXX --enable-obdc make make install Voilà le système est près à fonctionner. Vous pouvez désormais utiliser, php avec postgresql. Pour cela installez php avec les bonnes options ou les bons paquetages. Si vous utilisez php4+apache lisez ceci et si vous utilisez php5+apache2 lisez ceci. 3. Personalisation :3.1 Préparation :Maintenant que postgre est installé, vous devez vous assurez qu'un utilisateur postgres et un groupe postgres, existent sur votre système. Pour ce faire, tapez :
cat /etc/passwd | grep postgres Si vous n'aviez aucune réponse, c'est que vous n'avez pas d'utilisateur postgres, vous pouvez le créer par :
groupadd postgres useradd -g postgres -d /var/lib/postgresql postgres Il vous reste à lui attribuer le répertoire qui contiendra les bases de données :
# mkdir -p /var/lib/postgresql # mkdir -p /var/lib/postgresql/data # chown -Rf postgres.postgres /var/lib/postgresql # chmod 700 /var/lib/postgresql/data # su - postgres -c "/usr/bin/initdb --pgdata /var/lib/postgresql/data" # su - postgres -c "/usr/bin/pg_ctl start -D '/var/lib/postgresql/data' -s -l '/var/lib/postgresql/data/postgresql.log' -o '-N 1024 -B 2048'" Cette fois postgresql est lancé avec les droits de l'utilisateur postgres, c'est à dire aucun. Je fournis un script, que vous placerez dans /etc/rc.d/ (slackware,Mandriva, Rh ...) ou /etc/init.d/ (debian). Rendez-le exécutable :
chmod 744 /etc/rc.d/postgresql Désormais vous pourrez lancer postgres par : /etc/rc.d/postgresql start, le stopper par : /etc/rc.d/postgresql stop et le redémarrer par : /etc/rc.d/postgresql restart. Si vous souhaitez, lancer postgres à l'amorçage de la machine, rajoutez simplement la ligne suivante à votre /etc/rc.d/rc.local :
/etc/rc.d/postgresql start 3.2 Gestion des utilisateurs :Pour autoriser des utilisateurs du réseau (ou d'internet) à se connecter à votre serveur postgres, vous devez éditer le fichier /var/lib/postgresql/data/postgresql.conf, là assurez-vous d'avoir la ligne, suivante, décommentée :
tcpip_socket = true Un peu de sécurité maintenant, éditez le fichier /var/lib/postgresql/data/pg_hba.conf :
Cela autorise tous les utilisateurs locaux à se connecter à la machine sans mot de passe. Commençons par mettre un mot de passe à l'utilisateur postgres :
su - postgres psql -d template1 -c "ALTER USER postgres WITH PASSWORD 'le_mdp_postgres'" exit Maintenant, modifiez /var/lib/postgresql/data/pg_hba.conf de la manière suivante :
Pour valider, vos modifs, redémarrez le serveur : /etc/rc.d/postgresql restart Nous allons maintenant créer un nouvel utilisateur : "Nico" avec comme mot de passe "MyPass". Vous devrez, évidemment adapter à vos besoins :
su - postgres createuser -P Enter name of user to add: Nico Enter password for user "Nico": Enter it again: Shall the new user be allowed to create databases? (y/n) y Shall the new user be allowed to create more new users? (y/n) n Mot de passe: CREATE USER exit L'utilisateur Nico, est autorisé à créer de nouvelles bases de données, mais pas de nouveaux utilisateurs. A la fin un mot de passe, vous est demandé, c'est celui de postgres. CREATE USER, vous indique que l'opération s'est bien terminée. Si vous souhaitez que les utilisateurs identifiés de votre réseau local et ou Internet, puissent accéder à votre postgre, modifiez /var/lib/postgresql/data/pg_hba.conf :
Avec ceci, vous autorisez les utilisateurs du réseau local 192.168.0.x à accéder à votre serveur sql par mot de passe, idem pour les utilisateurs de l'IP 134.27.25.3 sur Internet. Vous pouvez définir d'autres politiques, consultez le fichier /var/lib/postgresql/data/pg_hba.conf, il est bien documenté. 3.3 Commandes de bases :Quelques commandes d'admin, elles supposent que vous soyez logué en tant que postgre :
su - postgres
A la fin vous pouvez revenir à l'utilisateur courant par : exit 3.4 Création d'une base et d'une table de test :maintenant que postgre est démarré, et l'utilisateur Nico créé, vous pouvez créer une base, ici testdb, par :
# createdb -U Nico testdb -U fixe le nom de l'utilisateur à qui appartiendra la base. psql est l'utilitaire qui permet de gérer la base et ses données pour démarrer psql tapez simplement :
# psql -d testdb vous pouvez alors exécuter toutes les requêtes sql ainsi que des instructions procédurales (PLpg/SQL), par exemple créer une table de test grâce à : create table test ( id integer primary key, nom varchar(50), prenom varchar(50) ); Créez-vous un petit jeu de test en entrant des données grâce à l'instruction insert. N'oubliez pas, dans psql, de terminer les requêtes par ';' pour les executer. Pour sortir, c'est \q. 3.5 Exemples d'utilisation :On peut écrire des interfaces pour postgre dans la plupart des langages tel que : C/C++, perl, java, php etc... Voici quelques exemples : a)en php :php nécessite le module pgsql. Mais peut être installer à la compilation de php en ajoutant "--with-pgsql" a la commande ./configure de php. Par défaut postgre nécessite une petite manip avant de pouvoir être connecté à un script php. Grâce aux fonctions pg_pconnect, pg_ex, et pg_fetcharray et bien d'autres disponible ici Vous pouvez réaliser des accès a la db avec php. <?
$connection = pg_pconnect("dbname=testdb user=Nico password=MyPass");//connexion
//pg_query("INSERT into test values(3,'Nico','Nico')");
//pg_query("INSERT into test values(3,'albert','einstein')");
$result = pg_query($connection, "select * from test");//execution de la requete
while ($row = pg_fetch_assoc($result)) {
echo $row['id'].' | '.echo $row['nom'].' | '.echo $row['prenom'];
}
?>Testez ce script dans votre navigateur via votre serveur web et devrait afficher les données contenues dans la table. b)en perl :La connexion entre un script perl et une db postgreSQL se fait grâce au module dbi, qui est un module capable de se connecter à plusieurs types de db, les plus courants bien entendu comme oracle, mysql, sybase et autre. Sur ma distribution, Red hat, ce module est installé par défaut (consultez le site officiel, si vous ne l'avez pas) Un script similaire a celui ci dessus, peut être aisément réalisé, à l'aide du driver adéquat (dbi:Pg pour postgre). #!perl
use DBI;
my $db = DBI -> connect("dbi:Pg:dbname=testdb","Nico","MyPass") || die $DBI::errstr;
$req = $db->prepare("Select * from test");
$req->execute();
while (($id,$nom,$prenom)= $req->fetchrow_array())
{
print $id.' | '.$nom.' | '.$prenom."\n";
}
$db->disconnect();enregistrez le dans un fichier test.pl ,puis tapez :
perl test.pl Pour l'exécuter. Je considère que vous êtes dans le même répertoire que le fichier test.pl, bien-sûr, sinon c'est le chemin relatif ou absolu qu'il faut passer en paramètre à perl. Si vous êtez intéressé par le sujet, je vous conseille cet ouvrage : "Perl DBI" des édition O'Reilley, cliquez [url=http://www.oreilly.fr/catalogue/perldbi.html ]ici[/url] pour plus d'info. c) en c++La connexion aux db avec C++ se fait grâce à la librairie libpq++. Voici un exemple adapté a notre bd, inspiré du code "example 2-1" de cette page, que je vous invite à consulter pour de plus amples informations sur les interfaces avec c++. Copiez le code ci-dessous dans un fichier test.cpp ,placez le dans un répertoire ou l'utilisateur de la base a le droit d'exécuter un programme(dans son dossier personnel, par exemple : /home/Nico). On suppose que vous êtes dans /home/Nico dans le shell également. Pour compiler, tapez :
g++ -I/pgsql/include test.cpp -L/pgsql/lib -lpq++ -lpq Puis, exécutez :
./a.out Voici le code : #include <iostream.h>
#include <libpq++.h>
void main()
{
PgDatabase data("dbname=testdb");
if ( data.ConnectionBad() ) {
cout << "Connection was unsuccessful..." << endl
<< "Error message returned: " << data.ErrorMessage() << endl;
return 1;
}
else
cout << "Connection successful... Enter queries below:" << endl;
// Interactively obtain and execute queries
ExecStatusType status;
string buf;
int done = 0;
while (!done)
{
cout << "> ";
cout.flush();
getline(cin, buf);
if ( buf != "" )
if ( (status = data.Exec( buf.c_str() )) == PGRES_TUPLES_OK )
data.DisplayTuples();
else
cout << "No tuples returned..." << endl
<< "status = " << status << endl
<< "Error returned: " << data.ErrorMessage() << endl;
else
done = 1;
}
return 0;
}Le programme demande a l'utilisateur d'entrer une requête, ensuite si la requête renvoi des résultats le programme les affiche sinon affiche "No tuples returned", mais exécute la requête si celle ci est valide. 3.6 Sauvegarde d'une base de données :Sauver une base postgreSQL peut se faire a l'aide de l'utilitaire pg_dump dans la console, logger sous l'utilisateur pour lequel pour vous voulez la base ("Nico",dans notre exemple). Pour ce faire, tapez dans la console :
pg_dump Nico -f base.sql Ou Nico est le nom de la base, et base.sql le fichier dans lequel vous souhaitez sauver les données. L'utilistaire pg_dump va recreer un fichier "base.sql" qui contient toutes les instructions sql qui permettront de recrée la base a partir de rien. Ensuite pour la restaurer , logger vous simplement a psql , et taper la commande suivante :
\i base.sql La commande \i permet simplement d'executer les instructions qui se trouver dans le fichier base.sql. Je signale également l'existence du paramètre -t NOM_TABLE passer a pg_dump qui permet de ne sauver que la table indiqué. 4. Liens utiles :
--Message édité par Jul le 13-12-2005 à 08:10:23-- ------------------------------------- Le Paradis c'est www.trustonme.net |
|||
| Page : [1] |
Forum » Documentation Linux » PostgreSQL |
Forum modéré par : Jul |
| Même auteur |
|
Score ( voter ) : ![]() ![]()
|
|
- Petit scarabée : 0 pastille, moins de 100 messages
- Scarabée : 0 pastille, plus de 100 messages
- Hobbit : 1 pastille, plus de 1000 messages
- Naboo : 2 pastilles, plus de 2000 messages
- Elfe : 3 pastilles, plus de 3000 messages
- Jedi : 4 pastilles, plus de 4000 messages
- Maître Jedi : 5 pastilles, plus de 5000 messages
