Connexion Mysql Externe [Résolu]

macsmart 5 Messages postés lundi 26 avril 2004Date d'inscription 14 avril 2005 Dernière intervention - 14 avril 2005 à 00:37 - Dernière réponse : Ramdn 4 Messages postés vendredi 18 novembre 2005Date d'inscription 26 décembre 2005 Dernière intervention
- 26 déc. 2005 à 13:23
Bonjour,



c'est ma première question alors je vais essayer de pas raconter n'importe quoi, bien que je suis un grand débutant...



J'aimerais savoir si il était possible de se connecter à une table MySQL externe.

Je m'explique:

J'ai un site web hébergé(on va l'appeler A) sur un hébergeur assez
sécurisé. D'un autre côté j'ai un pc avec une webcam(B). J'ai installé
un petit serveur dessus. Sur se même pc j'aimerais afficher un autre
site web qui fonctionnerait comme une borne.

Et j'aimerais qu'il (B) se connecte à la même base que A.



Pourquoi faire ça me dirais vous?

Et bien parce que la webcam envoye tout les secondes une image dans un
fichier sur le serveur de la machine B. Et qu'ensuite cette image par
un click s'affiche dans une page web. En même temps j'aimerais qu'elle
se sauve sur le serveur du site A mais ce n'est pas possible comme il
est trop protégé.

Au final est-il possible de se connecter à une base MySQL sur un autre serveur???



Désolé si je ne suis pas très clair
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
macsmart 5 Messages postés lundi 26 avril 2004Date d'inscription 14 avril 2005 Dernière intervention - 14 avril 2005 à 19:21
3
Merci
Merci beaucoup je vais essayer ça! Sinon je trouverais une autre solution



Encore Merci

Merci macsmart 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 121 internautes ce mois-ci

Commenter la réponse de macsmart
cs_sjon 861 Messages postés mardi 26 mars 2002Date d'inscription 29 novembre 2006 Dernière intervention - 14 avril 2005 à 02:34
0
Merci
Sael og blesud

Il est tout à fait possible de se connecter à une base de données MySQL distante, vous pourriez faire en sorte de votre site web A se connect à votre serveur de base de données MySQL sur votre serveur B en modifiant la valeur de bind-address qui est égale à 127.0.0.1 par défaut par votre adresse IP dans le fichier my.cnf et en créant un compte utilisateur MySQL comme ceci :

1ier cas :

mysql --user=root mysql
GRANT ALL PRIVILEGES ON *.* TO 'USER'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

ou

mysql_connect('localhost','root','');
mysql_selectdb('mysql');

INSERT INTO user VALUES('%','monty',PASSWORD('PASSWORD'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql_close();

ou encore

2ième cas :

mysql --user=root mysql
GRANT ALL PRIVILEGES ON *.* TO 'USER'@'IP
DU SERVEUR A' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

ou

mysql_connect('localhost','root','');
mysql_selectdb('mysql');
INSERT INTO user VALUES('IP DU SERVEUR A','monty',PASSWORD('PASSWORD'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql_close();

Dans le premier cas vous autorisez USER à se connecter à votre serveur MySQL de n'importe où sur l'Internet. Dans le deuxième cas vous autorisez USER à se connecter à MySQL depuis l'IP du serveur A uniquement.

Voilà ...

Cependant permettez moi de vous demander pour usez-vous de MySQL pour ce que vous voulez faire ? Ne pouvez vous pas faire d'upload sur le serveur A ? Ou encore pourquoi dans votre site web A ne pas créer un lien vers votre fichier qui lui se trouve sur votre serveur B ? Cela serait, à mon avis, plus simple ...

N'hésiter pas si vous avez des questions ...

Si la réponse vous convient merci de l'accepter

Sigurjon Birgir Sigurdsson aka Sjon

Fra en skal land eyda drengurinn med logum isaprenbokkarinnar.
Commenter la réponse de cs_sjon
macsmart 5 Messages postés lundi 26 avril 2004Date d'inscription 14 avril 2005 Dernière intervention - 14 avril 2005 à 09:58
0
Merci
C'est nickel sjon,



j'ai utilisé la 2ème solution et ça marche pas mal, coilà ce que j'ai mis:



$connexion = @mysql_connect("localhost","root","") or die ("ERREUR: impossible de localiser le serveur de base de données");

@mysql_select_db('BASE de DONNEE sur serveur A', $connexion) or die ("ERREUR: Impossible de localiser la base de donnée.");



$sql = "mysql --user=root mysql;";

$sql = "GRANT ALL PRIVILEGES ON *.* TO 'USER'@'ADRESSE ip SERVEUR A' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;";



Problème maintenant j'aimerais écrire sur la base de donnée du serveur A. qu'elles sont les requêtes que je dois faire?



Sinon pourquoi je fais comme ça:

Le serveur B est en faite un pc que je vais transformer en borne (juste
bloquer les accès machine) et donc se connectera sur le serveur interne
de la machine. De cette manière il sera plus rapide que si toutes les
pages sont chargées sur le serveur A. Je peux aussi utiliser des images
moins compressé du fait qu'il ne faut pas les télécharger d'internet.

De plus pour envoyer les photos prise par la webcam, il faut que je soit dans une arborescence serveur pour que la requête ftp_connect fonctionne.

Voilà. Si j'ai été clair.

Encore un grand merci. SI tu sais encore un peu m'aider?
Commenter la réponse de macsmart
macsmart 5 Messages postés lundi 26 avril 2004Date d'inscription 14 avril 2005 Dernière intervention - 14 avril 2005 à 10:36
0
Merci
Rectification je suis toujours sur la table mysql du pc B.

Où me suis-je trompé?



(j'avais mes 2 tables identiques donc je n'avais pas bien vu...)
Commenter la réponse de macsmart
cs_sjon 861 Messages postés mardi 26 mars 2002Date d'inscription 29 novembre 2006 Dernière intervention - 14 avril 2005 à 13:54
0
Merci
Sael og blesud

Bon alors on recommence :

Votre erreur est la suivante, vous faites :

$connexion = @mysql_connect("localhost","root","") or die ("ERREUR: impossible de localiser le serveur de base de données");
@mysql_select_db('BASE de DONNEE sur serveur A', $connexion) or die ("ERREUR: Impossible de localiser la base de donnée.");

Ce qu'il y a au dessus c'est du PHP. Ensuite vous faites :

$sql = "mysql --user=root mysql;";

$sql = "GRANT ALL PRIVILEGES ON *.* TO 'USER'@'ADRESSE ip SERVEUR A' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;";

Alors que là c'est un mélange de PHP et de commandes SQL et non pas de requêtes c'est à dire qu'en mode console (donc sans PHP) on attaque directement le serveur MySQL. Explication :

La commande suivante exécutée dans une console :

mysql --user=root mysql

Permet de s'identifier auprès du serveur MySQL afin d'exécuter des commandes SQL.
Puis la commande exécutée dans une console :

GRANT ALL PRIVILEGES ON *.* TO 'USER'@'ADRESSE ip SERVEUR A' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

correspond à la commande SQL de création d'utilisateur MySQL. Mais ce n'est du PHP.

Donc ce que vous auriez dû faire :
Modifier le ficher my.cnf comme expliquer dans mon permier post
Dans une page php vous inscrivez ce code

<--Début du code-->
<?php
mysql_connect('localhost','root','');
mysql_selectdb('mysql');
$requeteSQL="INSERT INTO user VALUES('IP DU SERVEUR A','USER DU SERVEUR A',PASSWORD('PASSWORD DU SERVEUR A'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')";
$resultat=mysql_query($requete)or die('Error '.mysql_error());
mysql_close();

?>
<--Fin du code-->

Puis d'afficher cette page dans votre navigateur préféré.

Ce qui vous permetterait de faire à partir du serveur A une requete PHP :

mysql_connect('IP DU SERVEUR B','USER DU SERVEUR A','PASSWORD DU SERVEUR A');
... etc ...

Concernant votre envie d'écrire dans votre base de données du serveur A, cela me semble plus délicat si vous n'en êtes pas propriétaire. Car le mieux aurait été de procéder de la même façon mais je ne pense pas que vous ayez un accès à la base "mysql".

Mais ce n'est pas impossible, par exemple :

Sur le serveur A vous créez une page nommé getdata.php avec le code suivant :

<--Début du code-->
<?php
$requete =stripslashes(htmlentities($_POST['requete']));
mysql_connect('localhost','user','password');
mysql_selectdb('test');
mysql_query($requete);
?>
<--Fin du code-->

Puis sur votre serveur B vous créez une page senddata.php avec le code suivant :

<--Début du code-->
<?php
$requete="INSERT INTO test VALUES ('value1','value2')";
echo ('
<form name="senddata" action="http://SERVEUR A/getdata.php" method="POST">

</form>
<script>document.senddata.submit();</script>
');
?>
<--Fin du code-->

Ce n'est qu'un exemple à vous d'adapter en fonction de vos besoins ... Par ailleurs si vous travaillez en php5 vous pouvez faire beaucoup mieux avec les public class ou autres choses du même genre ;-)

N'hésiter pas si vous avez des questions ...

Si la réponse vous convient merci de l'accepter

Sigurjon Birgir Sigurdsson aka Sjon

Fra en skal land eyda drengurinn med logum isaprenbokkarinnar.
Commenter la réponse de cs_sjon
Ramdn 4 Messages postés vendredi 18 novembre 2005Date d'inscription 26 décembre 2005 Dernière intervention - 26 déc. 2005 à 13:23
0
Merci
salut,
jai un probleme pour la connexion, elle marche bien en local mais des erreur s'apparaissent quand j'essaye de connecter ma base a distance.
peut etre qu'il faut d'autre parametres pour une base distante???
pour designer ma base distante j'utilise son URL est ce que ca marche?


merci de m'aider.

[mailto:ramdn001@hotmail.com ramdn001@hotmail.com]
.RAMDN
Commenter la réponse de Ramdn

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.