Posez votre question Signaler

Base local mysql vers serveur web avec le php

dwarfelvish 8Messages postés 23 juillet 2003Date d'inscription - Dernière réponse le 19 mars 2011 à 01:25
bonjour je voudrais savoir si il est possible de transférere avec une page en php les données d'une base mysql situé sur le serveur de l'hebergeur vers une base mysql situé en local sur un poste situé au sein d'un reseau qui possède internet grace a un router adsl.
ou sinon sur un poste en local connecté directement a internet
??
c'est tres urgent
merci pour vos reponses et aides futures
Lire la suite 

Base local mysql vers serveur web avec le php »

24 réponses
Réponse
+3
moins plus
les possibilitées dépendent de plusieurs choses.

Si ta bdd est importante, tu risques de planter car ça dépassera les 30s d'exécution de ton script.
Un script php ne peut excéder 30s d'éxécution.

Le deuxième soucis est du côté local. Par défaut les bdd sont accessible uniquement en local. c'est à dire avec un script déposé sur la même machine que le serveur bdd.
A toi d'autoriser un client extérieur à accéder à la bdd sur ta machine locale.

Sinon ya pas de soucis ce jouable.
Si c'est juste pour transférer une bdd, il vaut peut être mieux exporter les tables via PhpMyAdmin et les importer ensuite en local.

bon courage :)
kalamit- 25 juil. 2003 à 10:22
Bonjour,
Tu sais te connecter à une base MySql ou pas ?

<?php

//code à executer deux fois en changeant les parametres.
//$host: ip de la machine sur laquelle est installée la base.

$host = "192.168.1.6";
$user = "user";
$bdd = "base";
$password = "passwd";

mysql_connect($host, $user,$password) or die("erreur de connexion au serveur");
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");
?>



En fait, il te faudra faire deux connexions. Une pour récuperer les données sur ta base dite locale (faudra qd meme etre sur le net, si tu veux que ca fonctione) et une connexion pour la base chez l'hebergeur.


Kalamit,
o(^_^)o
dwarfelvish- 25 juil. 2003 à 10:42
salut kalamit
ça ça ne marche pas car je t'explique
l'adresse ip que tu me met c'est une ip local
moi je suis sur un hebergeur (levillage.org)
ma page de connexion a la base dessus
est donc comme il le faut
host = "localhost"

et a partir de cette page faire une deuxieme connexion mais cette fois a un pc distant ou serais installé easy php et qui contiendrais la base dite 'local'
comprends tu ?
en plus j'ai essayé de remplacer localhost dans la deuxieme connexion par l'ip de mon poste 81.**.**.**
et en lancant le site sur levillage il m'a dit impossible de se connecter
en gros il se connecte a la base sur levillage mais derriere pas a celle sur mon pc
@@@++
kalamitkalamit - 25 juil. 2003 à 10:58
L'ip locale, c'etait pour l'exemple... :)

Ah bah ouais, la, t'es grillé... Normal que le-village veuille pas que tu te connectes sur une base qu'il ne maitrise pas ! C'est pareil chez Free (et Multimania, j'en parle meme pas...). C'est une config dans le php.ini, je crois, mais comme tu n'as pas accès à ce genre de fichier, c'est pas la peine de chercher plus loin !

Chez un hebergeur payant, tu devrais avoir moins de soucis...

Kalamit,
o(^_^)o
Ajouter un commentaire
Réponse
+3
moins plus
salut,
pour la limite de temps d'exécution des script y'a une solution ici ; peut etre que ça t'seras utilie... a+
http://php.developpez.com/faq/?page=configuration
Ajouter un commentaire
Réponse
+0
moins plus
Se serait plus au niveau de mysql que de apache. En tête comme ça je me rapelle plus, je v regarder et je te dis ça dès que je trouve
Ajouter un commentaire
Réponse
+0
moins plus
Ton script devra obligatoirement être exécuté sur le serveur le village... pour une question de droits.

Du coté de ta machine locale, une fois que tu as installé easyphp, il faut que tu crée un utilisateur avec les droits d'acces depuis l'extérieur. Par defaut mysql ne crée pas de compte utilisateur, tu peux juste accéder a la bdd via 'lovalhost'

Pour créer un compte utilisateur, utilise la commande Grant. Si tu connais pas cette commande tu as des explications à cette adresse : http://dev.nexen.net/docs/mysql/annotee/grant.php

Pour la limite des 30s, sur village.. je ne pense pas que tu puisses modifier la config de apache.
Dans ce cas tu as une autre solution, pas des plus simple mais qui peux fontionner.

Sur village : enregistre l'ensemble des tes données sous forme de requette sql dans un fichier temporaire.
Une fois dans le fichier, dépose ce fichier sur ton serveur local.
Du côté local fais toi un ptit script en php qui ira lire ce fichier et injectera les données en bdd.

Si tu dois faire ce genre de manip régulièrement, il serait bien de convaincre le client de te laisser accéder à un phpmyadmin, c'est quand même plus simple :)
dwarfelvish- 25 juil. 2003 à 11:44
une fois le compte utilisateur crée comment a partir de la base sur l'hebergeur, je me connecte a la base sur mon poste
je peux pa utiliser host=localhost car ça c deja pris par levillage ?
Ajouter un commentaire
Réponse
+0
moins plus
Tu remplaces localhost par l'ip de ta machine locale.
kalamit- 25 juil. 2003 à 16:52
J'ai 5 minutes pour faire des essais, si ca marche pas, je réessaierai demain.

Kalamit,
o(^_^)o
kalamit- 25 juil. 2003 à 16:55
Chez moi, ca fonctionne... La seule difference, c'est que j'ai mis un mot de passe à root. Mais sinon, j'arrive à executer des requetes sur un serveur mysql distant.

Kalamit,
o(^_^)o
dwarfelvish- 25 juil. 2003 à 17:41
ça marche pas pour moi
je comprends plus rien
si qqun pouvais me donner la syntaxe exact car la je nage
ça doit surement etre une betise mais bon !
sinon j'ai un pb quand je met un mot de passe a 'root'
ça me flingue tout
j'ai pu access au base avec phpmyadmin et je peux plus rien en tirer
obligé de reinstallé mysql
@@@++ les gens
Ajouter un commentaire
Réponse
+0
moins plus
host = '' / user ='' / pass =''
Ces params là te permette pas de créer un utilisateur, c'est juste une config pour accéder à un serveur mysql via PhpMyAdmin.

Je crois que tu confonds PhpMyAdmin et mysql. Le premier est un client php pour accéder à un serveur mysql, le deuxième est le serveur mysql.

// base du poste a mon collegue
$host2 = "192.168.1.41";
$user2 = "root";
$pass2 = "";
$bdd2 = "foot";


Pour ton deuxième poste, root c'est pas bon il est autorisé que sur la machine locale. Il faut créer un autre user qui lui sera autorisé sur tout serveur et sur toute bdd( c plus simple ). Tu peux aussi modifier le compte root mais je te le conseille pas, si plantage c'est réinstall du serveur.

// base du poste a mon collegue
$host2 = "192.168.1.41";
$user2 = "toto";
$pass2 = "toto";
$bdd2 = "foot";


Pour créer un user :
voila la requette pour créer un user toto, pass=toto sur tout serveur.

INSERT INTO mysql.user SET Host = '%', User = 'toto', Password = PASSWORD('toto'), Select_priv = 'Y', Insert_priv = 'Y', Update_priv = 'Y', Delete_priv = 'Y', Create_priv = 'Y', Drop_priv = 'Y', Reload_priv = 'Y', Shutdown_priv = 'Y', Process_priv = 'Y', File_priv = 'Y', Grant_priv = 'Y', References_priv = 'Y', Index_priv = 'Y', Alter_priv = 'Y'


Une fois exécutée, il faut que tu recharges mysql:

Ensuite il faut que tu déclares les droits pour ce user :
la requette :

GRANT Select, Insert, Update, Delete, Create, Drop, Reload, Shutdown, Process, File, References, Index, Alter ON `toto%`.* TO 'toto'@'%' WITH GRANT OPTION


Recharge mysql et a priori c'est bon

Dans ce mode la, le premier post (192.168.1.11) correspond à village.., le deuxième (192.168.1.41) à ton post distant.
Quand tu feras la manip en situation réelle, penses bien au fait que tout se paramètre sur ton post locale car sur village tu as déjà les droits puisque ton script sera exécuter sur ce serveur.

Bon courage :)
PS : J'ai fais la manip ce WE et pas eu de soucis particulier :) il faut juste penser à recharger mysql sinon ton user est considéré inconnu.
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
Donc moi j'ai exactement le même problème : je suis en local avec 2 pc qui ont chacun un serveur easyphp.
Je desire avec l'hôte 1 accéder à ma base de l'hôte 2 .
Pour cela avec l'hôte 1 je passe par une petite interface en passant par le navigateur (127.0.0.1) .
J'arrive sur une page qui me demande de rentrer une information : cette information j'essaye de l'envoyer directement via le réseau, vers ma base de donnée situé sur mon hôte 2 .
* hôte 1 : ip : 192.168.1.101
* hôte 2 : ip : 192.168.1.110
* base de l'hôte 2 ou je désire insérer des informations : testbdserveur

Dans phpmyadmin de la base de l'hôte 2(celle ou je désire insérer des informations depuis l'hôte 1), j'ai crée un autre utilisateur (login:xoflam et mdp:malfox) et j'ai également mis un mot de passe à l'utilisateur root (mdp:root)

J'ai également décommenter la ligne de configuration de mysql : #bind-address:127.0.0.1

Dans mon script php (se situant sur la base de l'hôte 1 )
J'essaye de me connecter à ma base de l'hôte 2 avec les 2 utilisateurs :
1)
$cnx=mysql_connect("192.168.1.110","root","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);

Lorsque j'execute j'ai le message suivant :

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

2)
$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);

message obteu :

Warning: mysql_connect(): Accès refusé pour l'utilisateur: 'xoflam'@'@XOFLAM' (mot de passe: OUI) in c:\documents and settings\florimond\mes documents\cours\easyphp1-8\www\local\miseajour.php on line 14
connexion impossible

Il faut savoir que j'ai pourtant autoriser l'utilisateur 'xoflam' a avoir tous les privileges !!!
Quel est le problème de cette situation ? je n'arrive pas à trouver la solution !!!
Merci
obaam- 26 août 2008 à 14:19
slt xoflam pour le premier il faut mettre à la place de l'hote localhost/127.0.0.1 car tu est en local et tu utilise l'utilisateur root qui est un user de mysql
obaam- 26 août 2008 à 16:29
salut xoflam ignore le premier msg
voici le bon
une fois que tu as commenter le bind-adresse=127.0.0.1 et redemarrer le mysql
il faut te rendre dans le fichier de configuration de php ( \phpmyadmin\config.inc.php)

1. $cfg['Servers'][$i]['auth_type'] = 'config'; // Authentication method (config, http or cookie based)?
2. $cfg['Servers'][$i]['user'] = 'root'; // MySQL user
3. $cfg['Servers'][$i]['password'] = '';

tu modifies les lignes 2 et 3 comme suite
tu remplace root par ton login et tu met un passeword à la place de '' en suit tu redemarre easyphp
et tu ouvre mysql en mode console et tu tape la commande suivante

GRANT ALL PRIVILEGES ON *.* to 'ton_user'@'%' IDENTIFIED BY'pwd';

// le % veut dire ni'mporte kel poste. Tu peux specifier en donnant l'ip à partir du kel il est autoriser à se connecter

avec ça ton user pourra se connceter sans pb.
Ajouter un commentaire
Réponse
+0
moins plus
bonjour je voudrais savoir comment arriver a envoyer des mails aux utilisateurs pour leurs confirmer leurs inscriptions sur mon site jutilise la base de donné mysql merci et je suis à l'ecoute
obaam- 26 août 2008 à 15:52
il faut utiliser la fonction mail en php dont la syntaxe est :
mail($destinataire,$objet,$message);
dont:
$destinataire= l'adresse email du destinataire
$objet = l'objet du message
$message =message à envoyer.
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
J'ai installé EasyPHP sur mon oridnateur, mais mes requêtes veulent pas s'éxecuter on m affiche un message d 'erreur :


Warning: mysql_connect(): Unknown MySQL Server Host 'root' (11004) in c:\program files\easyphp1-8\www\site\debut.php on line 17
Erreur de connexion à la base

Je ne sais pas par quoi remplacer "localhost".

AIDEZ SVP.
Merci.
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

J'ai tout sur easyphp en local (site joomla:apache/mes tables et bases:mysql). J'aimerais les exporter sur un serveur web (hébergeur OVH). J'ai créé ma base du même nom nommé dans joomla, j'ai déjà envoyé le site définitif via un client ftp (ftpexpert) vers l'hébergeur mais sans les bases liées rien ne fonctionne, normal ;)
J'aimerais exporter (du local) et importer (web) toutes mes bases (toutes les 2 paramétrées en uft8_ci_générale) et que les liens s'effectuent mais ça clache quelque part.

Queme conseillez-vous SVP? Et quel lien d'aide auriez-vous SVP?
Suis pas novice mais pas expert non plus ;)

Merci d'avance.
Parck - 19 mars 2011 à 01:25
Tu souhaite faire quoi importer ta base mysql sur celle de ton hébergeur? Si c'est bien sa tu export la base de ton site local puis tu m'importe sur celuis de ton hébergeur et n'oublie de changer le paramètre d'identification dans le fichier configuration.php
Ajouter un commentaire
Ce document intitulé « base local mysql vers serveur web avec le php » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?