{MySQL} acces distant - pb de config

Résolu/Fermé
alexandre - 14 déc. 2009 à 14:27
dam75 Messages postés 1043 Date d'inscription lundi 4 mai 2009 Statut Webmaster Dernière intervention 21 février 2023 - 16 déc. 2009 à 15:23
Bonjour,

j'ai un serveur A, avec un LAMP
sur ce serveur, une BDD que nous appellerons CLIENTS

je dois proposer à quelqu'un une inscription déportée via une iframe sur un serveur B, de façon à ce que ce formulaire envoie les données dans ma BDD CLIENTS du serveur A

J'ai fait ceci :
j'ai créé un nouvel utilisateur sur le serveur A (avec phpmyadmin) :

INSERT INTO mysql.user
SET Host = '%', User = 'monpote', PASSWORD = PASSWORD( 'lepassword' ) , 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'

Puis je lui ai réduit les droits uniquement en select, update et insert :
GRANT SELECT , INSERT , UPDATE ON `CLIENTS` . * TO 'monpote'@'%';

puis recharge des privilèges :
FLUSH PRIVILEGES ;

sur mon serveur A, j'ai créé un fichier de connexion : connexionmonpote.php
<?php
$serveur = "IP de mon site";
$thelogin = "monpote";
$passwordx = "lepassword";
$mybdd = "CLIENTS";
// ----------------------------
$base = mysql_connect($serveur, $thelogin, $passwordx);
mysql_select_db($mybdd) or die("erreur de connexion à la base de donnees");
?>

et sur le serveur B, dans le fichier de la iframe (le inscription.php), je fait un include :
include('http://adresse_de_mon_site.com/connexion/connexionmonpote.php') ;

et ça ne marche pas, j'ai le message suivant :
Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
pour lequel des recherches google ne m'ont pas aidé

dans phpmyadmin, pour la base CLIENTS, j'ai bien pour utilisateur :
monpote % (serveur) global (type) SELECT, INSERT, UPDATE (privilèges) Oui (grant)

inutile de vous dire que tout cela, c'est pour hier, mais toute aide sera appréciée évidemment.

Cordialement,
Alexandre

1 réponse

dam75 Messages postés 1043 Date d'inscription lundi 4 mai 2009 Statut Webmaster Dernière intervention 21 février 2023 67
16 déc. 2009 à 15:23
Bonjour,

ton problème vient de
$base = mysql_connect($serveur, $thelogin, $passwordx);

En effet, mysql_connect ne permet PAS de se connecter à une base MySQL via HTTP, or quand tu es sur le site de ton pote, il y a de fortes chances qu'il ne voit pas ton serveur MySQL qui est privé !

Plusieurs solutions :
1/ rendre l'IP de ton serveur SQL publique sur le port 3306 => TRES MAUVAIS pour la sécurité, mais si ca peut te dépanner momentanément ...

2/ Plus pérenne : faire que le formulaire sur la machine de ton pote poste ses données sur une page a toi
(form action="www.monsite.com/incription.php"), ainsi ça n'est pas son serveur qui se connectera au tien mais juste le form HTML qui postera sur une page chez toi, et plus de problème d'IP ...

Bon courage
1