Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/02/2008, à 15:39

xoflam

centralisation et mise à  jour de plusieurs base de données

Bonjour à  tous !
Donc voilà  je vous explique mon problème :
Dans le cadre de mon stage de 2e année de BTS, je dois mettre en place un projet relatif aux besoins de l'entreprise .
    Je dois donc mettre en place un progiciel sur un serveur (ce qui n'est pas un problème)
Le problème est le suivant : chaque technicien dans l'entreprise doit également posséder la base sur chacun de leurs ordinateurs portables respectifs .
  De plus cette base qu'il possède est modifiée dans la journée dans le cadre de déplacements chez leurs clients ! Est-il possible ensuite quand ils rentrent à  la boà®te le soir d'effectuer une mise à  jour de leurs bases vers la base du serveur ? et si possible s'il peuvent récupérer la nouvelle base du serveur (car chaque technicien fait sa mise à  jour avec son pc )
Voilà  donc je me demande comment procéder, quel système de fonctionnement serait le plus adapté ? est-ce possible avec easyphp ?? je ne sais pas trop et je m'en remet donc à  vos compètences en attente de toutes aides ou astuces !!
Je vous remercie d'avance pour votre temps-Cordialement

Hors ligne

#2 Le 19/02/2008, à 00:17

inbox

Re : centralisation et mise à  jour de plusieurs base de données

Salut,

Sais-tu quels logiciels sont utilisés (base de données, progiciel, etc) ?

Si j'ai bien compris la base devrait être identique sur le serveur et les différents PC ?

Un problème aussi, sera la synchronisation des différents PC : en parallèle ou l'un après l'autre. A la réflexion, il s'agirait plutà´t de "décharger" les mises à  jours des bases des PC vers le serveur, puis une resynchronisation vers les PC ?

Question bête, le progiciel en question ne sait pas gérer ce genre de choses ?

A+

[EDIT] Au cas ou : http://www.woueb.net/2007/11/30/outils- … our-mysql/

Dernière modification par inbox (Le 19/02/2008, à 00:18)


Un problème résolu ? Indiquez le en modifiant le titre du sujet.

Hors ligne

#3 Le 19/02/2008, à 09:30

xoflam

Re : centralisation et mise à  jour de plusieurs base de données

bonjour,
Donc pour répondre à  ta question j'utilise phpmyadmin avec une base de données mysql sur les PC des techniciens et sur le serveur.
En fait le mieux se serait que j'arrive à  automatiser les mises à  jour : je m'explique !
Il faudrait qu'à  partir d'une interface les techniciens connectés au réseau puissent envoyer les nouvelles données au serveur et que cet envoi permette également de copier entièrement la base du serveur sur la base de donnée du technicien afin qu'il puisse accéder à  toutes les informations concernant les clients, le matériel, etc ... car les techniciens se déplacent constemment !
J'ai donc pensé à  installer 2 bases sur chaque PC des techniciens, une base principale qui sera mis à  jour par rapport à  la base de donnée du serveur et une base intérmédiaire qui recevra toutes les nouvelles données de la journée => c'est ce qui sera envoyé à  la base de donnée du serveur et automatiser ensuite sur la mise à  jour de la BDD principale du technicien par rapport à  la BDD principale du serveur !
Voilà  j'espère t'avoir donné assez d'informations !
Merci

Hors ligne

#4 Le 19/02/2008, à 14:33

inbox

Re : centralisation et mise à  jour de plusieurs base de données

Désolé, je ne pourrais t'aider. roll


Un problème résolu ? Indiquez le en modifiant le titre du sujet.

Hors ligne

#5 Le 19/02/2008, à 14:36

xoflam

Re : centralisation et mise à  jour de plusieurs base de données

ok merci quand même pour ton temps !

Hors ligne

#6 Le 19/02/2008, à 14:44

freebird

Re : centralisation et mise à  jour de plusieurs base de données

Oui c'est possible de le faire. Après ça dépend de ton architecture logicielle et de ton modèle de données.

Hors ligne

#7 Le 19/02/2008, à 14:48

xoflam

Re : centralisation et mise à  jour de plusieurs base de données

Je vais donner plus de renseignements afin que vous puissiez mieux cerner mon problème :

Dans le cadre de mon projet de BTS, je désire insérer des données dans une base mysql qui se trouve sur un pc du réseau.
Cette insertion doit se faire à partir d'un autre poste client au réseau(interne).
J'ai donc créer une base locale sur le poste client et j'ai crée une interface permettant au client de se connecter à la base du serveur.
Seulement il m'est impossible de joindre le serveur :
L'adresse ip du serveur est : 192.168.1.110
la base mysql porte le nom : testbdserveur
Je vous donne ma partie de code qui apparemment ne fonctionne pas :

$cnx=mysql_connect("192.168.1.110","root","")or die("connexion impossible");
mysql_select_db("testbdserveur",$cnx)or die("base non trouvée");
$req="INSERT INTO ri(id)
    VALUES('$_POST[numri]')";
    mysql_query($req)or die("erreur sur la requete");
echo"rapport enregistré";
mysql_close($cnx);

Voilà le message d'erreur lorsque j'execute cette page :

Warning: mysql_connect(): Can't connect to MySQL server on '192.168.1.110' (10060) in c:\documents and settings\florimond\mes documents\cours\easyphp1-8\www\local\miseajour.php on line 14
connexion impossible

La ligne 14 correspond à : $cnx=mysql_connect("192.168.1.110","root","")or die("connexion impossible");

Je me demande s'il est possible de faire ce genre de manipulation distante dans le réseau interne !
J'ai tenté de modifier le fichier .htaccess (allow from 192.168.1.101 => c'est l'adresse du client)
ainsi que le fichier de configuration apache/phpmyadmin en ajoutant également la ligne allow from 192.168.1.101
Il faut savoir que depuis le poste client lorsque dans mon navigateur je tape : 192.168.1.110 je réussis à me connecter à la base du serveur.
Mais je n'arrive toujours pas à insérer des données dans la base du serveur via l'interface du client !
Je m'en remet donc à vos compétences en éspérant de l'aide car je désèspere après une multitude de configurations je commence à me perdre ^^
Merci d'avance

Hors ligne

#8 Le 19/02/2008, à 15:18

freebird

Re : centralisation et mise à  jour de plusieurs base de données

Tu as un serveur et X postes client si j'ai bien compris. Ton serveur autorise les clients à  accéder à  la base au niveau firewall et au niveau de mysql ?

Hors ligne

#9 Le 19/02/2008, à 15:44

xoflam

Re : centralisation et mise à  jour de plusieurs base de données

Justement c'est ce que j'essaye de faire car je pense que le problème vient de là  !!!
Seulement comment dire au serveur d'accepter tel ou tel poste client ? quel fichier est à  configurer ? c'est au niveau de apache ? de mysql ?
J'ai cru comprendre qu'il fallait absolument crée un autre utilisateur pour le client afin qu'il puisse se connecter au serveur ! c'est ce que j'ai également essayé mais dès que je change le pass du root => phpmyadmin bug
Pour le firewall je l'ai désactivé le problème reste identique !

Hors ligne

#10 Le 19/02/2008, à 16:23

freebird

Re : centralisation et mise à  jour de plusieurs base de données

Dans phpmyadmin, quand tu as choisi la base, en haut à  droite tu as un onglet "Privilèges" qui te permet de voir les privilèges accordés à  ta base. Tu dois avoir la liste des couples machine/utilisateur qui sont autorisés à  accéder à  ta base.
Si ton client n'y est pas, cliques sur "ajouter un utilisateur" en bas et ajoute les droits dont tu as besoin pour ton client et refait ton test.

Hors ligne

#11 Le 19/02/2008, à 16:58

xoflam

Re : centralisation et mise à  jour de plusieurs base de données

J'ai rajouté un utilisateur dans phpmyadmin pour ma base du serveur testbdserveur (login:flo et mdp:flo)
J'ai donc changer ma page qui est sur le client qui devient :

<?

$cnx=mysql_connect("192.168.1.110","flo","flo")or die("connexion impossible");
mysql_select_db("testbdserveur",$cnx)or die("base non trouvée");
$req="INSERT INTO ri(id)
    VALUES('$_POST[numri]')";
    mysql_query($req)or die("erreur sur la requete");
echo"rapport enregistré";
mysql_close($cnx);

?>

Mais le problème reste le même :

Warning: mysql_connect(): Can't connect to MySQL server on '192.168.1.110' (10060) in c:\documents and settings\florimond\mes documents\cours\easyphp1-8\www\local\miseajour.php on line 14
connexion impossible

Cela veut donc bien dire que mon problème vient du fait que je n'ai pas dit au serveur que tel client(192.168.1.101) puisse se connecter à  la base testbdserveur ?? ou quelque chose comme sa !
Seulement je ne sais pas si un tel fichier de configuration existe ??

Hors ligne

#12 Le 19/02/2008, à 17:03

xoflam

Re : centralisation et mise à  jour de plusieurs base de données

J'ai oublié un détail :
Sur mon client j'ai également installé une base php-mysql
Je me connecte via le navigateur : 127.0.0.1
Je tombe sur ma page qui me permet de selectionner la connexion à la base du serveur dont le contenu est exactement :

<html>
<form action="miseajour.php" method="post" name="maj">
<BODY BGCOLOR="yellow">
<center><u>ENREGISTREMENT</u></center>
<hr><hr />
  <P align="left">Veuillez entrer le numero de RI : <INPUT TYPE="text" NAME="numri"><BR>
<hr><hr />
  <center><INPUT TYPE="SUBMIT" VALUE="ENVOYER">
  <INPUT TYPE="RESET" VALUE="ANNULER"></center>
</form>

<?

$cnx=mysql_connect("192.168.1.110","xoflam","malfox")or die("connexion impossible");
mysql_select_db("testbdserveur",$cnx)or die("base non trouvée");
$req="INSERT INTO ri(id)
    VALUES('$_POST[numri]')";
    mysql_query($req)or die("erreur sur la requete");
echo"rapport enregistré";
mysql_close($cnx);

?>
</body>
</form>
</html>

Hors ligne

#13 Le 19/02/2008, à 17:10

Martopioche

Re : centralisation et mise à  jour de plusieurs base de données

Bonjour

Je vais zapper les questions techniques et le choix de l'implémentation pour proposer la stratégie que je mettrai en place, bien qu'il me manque une info.

Coté BDD, une seule suffit. 2 sur le poste client, rien de tel pour provoquer des erreurs en tout genre (gestion des intégrités, etc etc...). Donc...

Chaque tech a un portable avec une BDD qui est une réplique d'une BDD centrale. Chaque tech intervient sur sa BDD et à un moment, il doit "synchroniser" sa BDD avec la centrale. Question à ce niveau : quelles sont les modifications ? Insertion/modification/délétion ? 2 techs peuvent ils être intervenu sur la même donnée et alors quels est la gestion de la concurrence ? Si la réponse à ce tout dernier point est négative, la solution est simple :

J'utiliserai le terme nomade pour les tech, statique pour la bdd/applicatif central.

- un applicatif serveur sur un... serveur en accès à la BDD
- un applicatif embarqué.

Si la BDD nomade est vide, l'applicatif nomade le signal au serveur qui lui renvoi un dump de la bdd. L'appli nomade charge la base.

Lors des utilisations, des procédures stockées/triggers font un log de toute modif. En gros, les données de log sont :
log {table; id;typeIntervention};

table : nom de la table
id : clef primaire de la ligne modifiée
typeIntervention : ce qui a été fait (insertion/modification ou délétion).

Note : la quantité de log peut être réduite si il y a des modifications en cascade.

Lors de la connexion au réseau, l'appli nomade interroge la table de log, envoi les modifs à la base statique et supprime les entrées du log nomade. Attention à ce niveau à gérer les pannes.

La récupération des infos statique est plus problématique :
- faire un log de la base statique peut marcher mais quelle est la stratégie de nettoyage qui ne doit avoir lieu qu'après que tous les nomades se soient synchronisés ?
- Dumper toute la base est hyper coûteux...

La solution 1 est possible si tu est sûr que ils ne font une MAJ tous les soirs. Ou alors un mix des 2...

Voila voila.

Bon courage.

Hors ligne

#14 Le 19/02/2008, à 17:18

xoflam

Re : centralisation et mise à  jour de plusieurs base de données

Pour répondre à  ta question les techniciens rentrent le soir et ne font uniquement que de nouvelles insertions ( des rapports d'interventions qui ont lieu au cours de la journée ) il faut donc qu'il mette à  jour à  la base en centrale en envoyant au serveur principale ces nouvelles données !
Et qu'en même temps si cela est possible ^^ qu'il récupère la base principale et qu'il la duplique sur leurs bases principales à  eux (les techniciens ) !
J'ai trouvé la solution permettant une coéxistence de ces 2 bases (une principale et une relatif aux "nouveaux" rapports d'interventions" ) , également je sais comment procéder pour qu'il puisse récupérer la nouvelle base par rapport à  leurs bases principales ! mais je n'arrive pas à  ce qu'ils envoyent les nouvelles données de la base relatif aux rapport vers la base principale du serveur !!!
Merci pour votre aide

Hors ligne

#15 Le 19/02/2008, à 17:20

xoflam

Re : centralisation et mise à  jour de plusieurs base de données

et j'ai oublié pardon 2 techniciens n'interviennent pas sur une même donnée en même temps ^^ car chaque technicien se déplace chez un client pour une panne

Hors ligne

#16 Le 19/02/2008, à 17:37

Martopioche

Re : centralisation et mise à  jour de plusieurs base de données

xoflam a écrit :

Pour répondre à  ta question les techniciens rentrent le soir et ne font uniquement que de nouvelles insertions

Ok, alors c'est une solution toute simple à  base de logs. Si une mise à  jour est effectuée tous les soirs, alors logs aussi sur la base centrale.

Ah, pour le problème de connexion : sous MySQL, les privilèges sont attribués par utilisateur  ET par serveur. Par défaut, la création d'un nouvel utilisateur lui donne des droits de connexion en localhost. Si tu a un serveur (machine) applicatif et un serveur de BDD, il faut donner les droits à  utilisateur.ipServeurApplicatif, sinon tu te fait jarreter.

Sous PhpMyAdmin :

- privileges

- editer un utilisateur

- aller dans la partie "Changement des informations de connexion / Copie d'utilisateur"

- modifier l'entrée "Serveur" soit en permétant tous les serveurs (%), mauvaise idée car unsecure, soit en saisissant explicitement le nom du serveur applicatif.

Ceci va créer une nouvelle entrée : tu aura donc utilisateur.localhost et utilisateur.serveurApplicatif. Les droits peuvent être gérés indépendamment.

Note importante : évite de faire ces modifs pour root, hein wink En plus je crois que tu ne peux pas sous MySQL.

Hors ligne

#17 Le 19/02/2008, à 17:43

xoflam

Re : centralisation et mise à  jour de plusieurs base de données

merci je vais essayer ça !
Petite dernière question : mon réseau est géré par ma freebox !
Cela n'empecherait pas la communication de ce systeme via un problème de port par hasard??

Hors ligne

#18 Le 19/02/2008, à 17:49

Martopioche

Re : centralisation et mise à  jour de plusieurs base de données

xoflam a écrit :

Petite dernière question : mon réseau est géré par ma freebox !
Cela n'empecherait pas la communication de ce systeme via un problème de port par hasard??

Si tu est en réseau interne, non. Tu demande une ip, tu passe par ta freebox pour aller à  ladite machine puis tu demande un port. Tu serait à  l'exterrieur, le problème serait autre...

Au fait, tu sait que tu pourrai bosser sur une seule machine à  l'aide de machines virtuelles ? wink L'intérêt est que tu utiliserai des install propres et transportables pour démo wink

Hors ligne

#19 Le 19/02/2008, à 18:11

xoflam

Re : centralisation et mise à  jour de plusieurs base de données

Je viens de tenter sans réussite ^^
Lorsque je dois spécifier mon serveur applicatif, je specifie le nom de ma base (testbdserveur) ?? mon IP (serveur)?? mon IP (client) ??
Je ne comprend pas très bien le principe ! désolé

Hors ligne

#20 Le 19/02/2008, à 18:27

Martopioche

Re : centralisation et mise à  jour de plusieurs base de données

bon, je suppose que tu a un utilisateur user sur ta base MySQL qui est celui que tu doit utiliser. Ta base est hébergée sur la machine 192.168.1.110

tu veux te connecter de 192.168.1.101.

dans phpMyAdmin, tu suis la procédure que je t'ai expliqué en choisissant :
Serveur : entrez une valeur

et tu saisi 192.168.1.101

Tu vérifie que ce nouvel utilisateur a les bons droits, et ce doit marcher si tu te connecte à  la base à  partir de 192.168.1.101.

Hors ligne

#21 Le 19/02/2008, à 18:30

Martopioche

Re : centralisation et mise à  jour de plusieurs base de données

Ah oui pour vérifier les droite :

privileges, editer l'utilisateur user@192.168.1.101 et regarder Privilèges spécifiques à une base de données

vérifier quels droits sont donnés à la base que tu utilise.

Hors ligne

#22 Le 19/02/2008, à 19:40

xoflam

Re : centralisation et mise à  jour de plusieurs base de données

ok merci je te tiens au courant de ces tests que j'effectuerai demain ! merci

Hors ligne

#23 Le 20/02/2008, à 09:33

xoflam

Re : centralisation et mise à  jour de plusieurs base de données

Bonjour,
Donc voilà  j'ai crée l'utilisateur 'xoflam' ayant tous les privilèges sur ma base testbdserveur, mon script php devient donc :

$cnx=mysql_connect("192.168.1.110","xoflam","malfox")or die("connexion impossible");
mysql_select_db("testbdserveur",$cnx)or die("base non trouvée");
$req="INSERT INTO ri(id)
    VALUES('$_POST[numri]')";
    mysql_query($req)or die("erreur sur la requete");
echo"rapport enregistré";
mysql_close($cnx);

Le résultat semble différent (peut-être un problème de port !)
=>
Warning: mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client in c:\documents and settings\florimond\mes documents\cours\easyphp1-8\www\local\miseajour.php on line 14
connexion impossible

Voilà  je sens que l'on progresse mis il ne veut toujours pas se connecter à  la base de mon réseau !!!

Hors ligne

#24 Le 20/02/2008, à 10:44

Martopioche

Re : centralisation et mise à  jour de plusieurs base de données

Pas la peine de réécrire le code PHP, ca vient pas de là .

fait

sql -u root

connecté, fait

use mysql

select * from users where user ="xoflam";

copie colle le résultat ici, puis

select * from db where user = "xoflam";

copie colle aussi.

Hors ligne

#25 Le 20/02/2008, à 11:19

xoflam

Re : centralisation et mise à  jour de plusieurs base de données

heu le résultat semble bizarre !! voit par toi même :

mysql> select * from user where user="xoflam";
+---------------+--------+-------------------------------------------+----------
---+-------------+-------------+-------------+-------------+-----------+--------
-----+---------------+--------------+-----------+------------+-----------------+
------------+------------+--------------+------------+-----------------------+--
----------------+--------------+-----------------+------------------+-----------
-------+----------------+---------------------+--------------------+------------
------+----------+------------+-------------+--------------+---------------+----
---------+-----------------+----------------------+
| Host          | User   | Password                                  | Select_pr
iv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_
priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv |
Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | L
ock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | Create_vie
w_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Create_user
_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max
_updates | max_connections | max_user_connections |
+---------------+--------+-------------------------------------------+----------
---+-------------+-------------+-------------+-------------+-----------+--------
-----+---------------+--------------+-----------+------------+-----------------+
------------+------------+--------------+------------+-----------------------+--
----------------+--------------+-----------------+------------------+-----------
-------+----------------+---------------------+--------------------+------------
------+----------+------------+-------------+--------------+---------------+----
---------+-----------------+----------------------+
| 192.168.1.101 | xoflam | *0400A8084E540A9F43D1207788119B7C61F33374 | Y
   | Y           | Y           | Y           | Y           | Y         | Y
     | Y             | Y            | Y         | Y          | Y               |
Y          | Y          | Y            | Y          | Y                     | Y
                | Y            | Y               | Y                | Y
       | Y              | Y                   | Y                  | Y
      |          |            |             |              |             0 |
       0 |               0 |                    0 |
+---------------+--------+-------------------------------------------+----------
---+-------------+-------------+-------------+-------------+-----------+--------
-----+---------------+--------------+-----------+------------+-----------------+
------------+------------+--------------+------------+-----------------------+--
----------------+--------------+-----------------+------------------+-----------
-------+----------------+---------------------+--------------------+------------
------+----------+------------+-------------+--------------+---------------+----
---------+-----------------+----------------------+
1 row in set (0.00 sec)

mysql> select * from testbdserveur where user="xoflam";
ERROR 1146 (42S02): La table 'mysql.testbdserveur' n'existe pas

Hors ligne