accéder à une base de données Mysql distante

Eléphanteau du PHP | 21 Messages

06 oct. 2007, 00:45

Bonsoir tout le monde,
Je travaille avec easyphp 1.8 sous windows, je voudrais accéder de mon PC à une base de données Mysql distante
quelqu'un pourrait me dire quelles sont les configurations requises pour le faire
et est ce cela suffit pour faire la connexion à la base distante

Code : Tout sélectionner

mysql_connect("IP_du_PC_distant","root","")or die('Erreur de connexion '.mysql_error()); mysql_select_db("nom_base_données");
Je vous remercie d'avance
L'échec est l'épice qui donne sa saveur au succès.

ViPHP
ViPHP | 2287 Messages

06 oct. 2007, 00:59

Oui et non. Pour ce qui concerne ton script en effet il n'y a rien de plus à faire, tu as tout bon. Par contre il faut que ton compte mysql distant soit configuré pour accepter des connexions depuis ton poste (et pour des raisons de sécurité dans 99% des cas il ne l'est pas :-) mysql est livré d'office avec des comptes utilisateurs restreints).

Au passage, ouvrir l'accès distant sur le compte root sans mot de passe depuis internet est une très mauvaise idée, j'espère que tu es en réseau local avec le serveur mysql que tu veux interroger ?
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Mammouth du PHP | 881 Messages

06 oct. 2007, 04:54

Si néanmoins tu veux accéder à ton PC à distance, il faudra que tu mette le sous-répertoire EasyPHP en partage.
Soyez artisans de paix

Eléphanteau du PHP | 21 Messages

06 oct. 2007, 08:05

bonjour tout le monde,
merci pour vos réponses
j'introduirai des mots de passe pour mes bases, pour le moment j'essaie de réaliser la connection
y a t-il pas d'autres configurations à faire comme exp apache? car j'ai tjrs le message d'erreur 'Erreur de connexion Can't connect to MySQL server on 'IP' (10061)'
Patriboom, comment mettre le sous-répertoire EasyPHP en partage??
je vous remercie enormement
L'échec est l'épice qui donne sa saveur au succès.

ViPHP
ViPHP | 2287 Messages

06 oct. 2007, 10:09

Je pense que ce sujet aurait plus sa place dans "administration de serveurs" ;-)
y a t-il pas d'autres configurations à faire comme exp apache? car j'ai tjrs le message d'erreur 'Erreur de connexion Can't connect to MySQL server on 'IP' (10061)'
Patriboom, comment mettre le sous-répertoire EasyPHP en partage??
je vous remercie enormement
Il faut aussi que ton serveur mysql soit configuré pour accepter les connexions distantes. Pour cela, c'est dans le fichier my.cnf.

Code : Tout sélectionner

bind-address = 127.0.0.1
Il faut que cette adresse ip soit une ip réseau valide (donc pas celle-là !). Tout dépend bien sûr de ta configuration réseau, et si tu es en réseau local avec ce serveur.

Avant d'aller plus loin, deux questions auxquelles tu devrais répondre : Le serveur mysql est-il sous windows ou sous linux ? Et est-ce que tu vas y accéder via un réseau local ou via internet ?
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

06 oct. 2007, 10:23

Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "Gestion de serveur(s)".
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

06 oct. 2007, 10:28

Bonjour,

Code : Tout sélectionner

bind-address = 127.0.0.1
Calimero a raison, c'est probablement cette ligne dans my.conf qui bloque l'accès à distance à MySQL.
Il faut que tu la mettes en commentaire (en mettant un "#" devant) et que tu redémarres MySQL pour qu'il prenne en compte les changements.

Ensuite, si tu essaye de te connecter, tu devrai avoir un message d'erreur comme quoi l'utilisateur n'est pas autorisé à se connecter car par défaut dans la base mysql, table user, le seul host autorisé pour les utilisateur est "localhost".
Pour changer, crée un nouvel utilisateur avec un mot de passe, où dans le champ host, il faut mettre "%" (sans guillemets) et exécute la requête SQL suivante pour valider les modifications d'utilisateurs:

Code : Tout sélectionner

FLUSH PRIVILEGES;
Si néanmoins tu veux accéder à ton PC à distance, il faudra que tu mette le sous-répertoire EasyPHP en partage.
Désolé Patriboom, mais ça n'a rien à voir avec la question...
Quand tout le reste a échoué, lisez le mode d'emploi...

ViPHP
ViPHP | 2287 Messages

06 oct. 2007, 10:39

Tout à fait d'accord avec l'ami @rthur, mais j'ai un doute sur le fait que changer cette ligne suffise si ton serveur mysql est sous linux (comme moi). Sous linux, la configuration par défaut utilise des sockets fichiers de type UNIX (et non des sockets réseau) et si ton serveur mysql est un serveur linux il te faudra peut-être aussi commenter d'autres lignes un peu plus haut dans le fichier pour passer en sockets réseau :-)
if(!@work()){ Nespresso(); } else { what(); }
______________________________

ViPHP
ViPHP | 5924 Messages

06 oct. 2007, 11:33

Tout est dit, je crois que j'arrive après la bataille :D

Calimero, sous Windows aussi, il est possible de faire passer la connexion en local (un système de communication interprocessus).
Sinon, il est possible aussi que le serveur soit logiquement inaccessible d'internet, s'il est dans un réseau local et qu'il n'y a pas de serveur NAT pour rediriger les connexions vers ces serveurs. Genre il peut y avoir un parc de seveurs HTTP ayant chacun leur IP internet reliés à un parc de serveurs SQL distinct, ceux ci non reliés directement au net. Dans ce cas, le serveur est physiquement indirectement relié à internet, mais en est déconnecté logiquement. Après tout cela dépend de l'architecture réseau, il peut y avoir aussi un serveur NAT central redirigeant toutes les connexions HTTP, mais pas le traffic SQL…

ViPHP
ViPHP | 2287 Messages

06 oct. 2007, 12:00

Calimero, sous Windows aussi, il est possible de faire passer la connexion en local (un système de communication interprocessus).
Tu es sûr de ça ? Ca ne doit pas être un cas courant, car je ne l'ai jamais rencontré.

Sinon, il est possible aussi que le serveur soit logiquement inaccessible d'internet, s'il est dans un réseau local et qu'il n'y a pas de serveur NAT pour rediriger les connexions vers ces serveurs. Genre il peut y avoir un parc de seveurs HTTP ayant chacun leur IP internet reliés à un parc de serveurs SQL distinct, ceux ci non reliés directement au net. Dans ce cas, le serveur est physiquement indirectement relié à internet, mais en est déconnecté logiquement. Après tout cela dépend de l'architecture réseau, il peut y avoir aussi un serveur NAT central redirigeant toutes les connexions HTTP, mais pas le traffic SQL…
Certes, mais je pense que si dasou se trouvait dans un cas de ce genre il aurait été plus précis dans sa demande au départ... Et aurait accès à de meilleures infos que celles qu'on peut lui donner sur ce forum (faut bien quelqu'un pour administrer tout ça !).

@dasou : Ce qui me fait d'ailleurs penser que pour toute demande de ce genre, il ne faut pas hésiter à te renseigner auprès de l'administrateur du serveur MySQL s'il y en a un, car c'est une de ses tâches de te fournir les moyens d'accéder au serveur comme tu le souhaites, ou au moins toute explication pertinente pour y arriver. C'est la personne la mieux placée pour connaître l'architecture réseau, les contraintes de sécurité et gérer les politiques d'accès au serveur.
Modifié en dernier par Calimero le 06 oct. 2007, 12:04, modifié 1 fois.
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 443 Messages

06 oct. 2007, 12:02

Calimero, sous Windows aussi, il est possible de faire passer la connexion en local (un système de communication interprocessus).
Tu es sûr de ça ? Ca ne doit pas être un cas courant, car je ne l'ai jamais rencontré.
SQLServeur peut fonctionner sous nt avec des pipes nommés, ce n'est pas impossible que Mysql le propose également.

[Edit]
D'ailleurs dans la doc on trouve: mysqld-nt Optimized binary with named-pipe support
http://dev.mysql.com/doc/refman/5.0/en/ ... erver.html

Eléphanteau du PHP | 21 Messages

06 oct. 2007, 14:26

je vous remercie inifinement pour vos réponses, j'ai réussi à réaliser la connexion :D :D
j'ai procédé comme ceci:
dans httpd.conf du PC serveur j'ai mis:
listen mon_IP 80
dans la partie Alias /mysql/ "${path}/phpmyadmin/" j'ai rajouté: allow from mon_IP

dans le fichier my.cnf j'ai commenté bind-address = 127.0.0.1 ça donne #bind-address = 127.0.0.1

dans la table user dans le champ host, j'ai mis "%" au lieu de de "localhost"
Je travaille sous windows
encore une fois un grand MERCI
L'échec est l'épice qui donne sa saveur au succès.

didne003
Invité n'ayant pas de compte PHPfrance

09 juil. 2010, 21:20

tres bonne reponse merci il m'a aider a trouver la solution exacte

didine003
Invité n'ayant pas de compte PHPfrance

09 juil. 2010, 22:10

j'ai pas trouver le fichier my.cnf dans wamp, mais par contre my.ini est ce que la même chose que xampp sous linux

Mammouth du PHP | 881 Messages

13 juil. 2010, 19:52

Bonjour,

avec Linux, il te faudra jouer dans les configurations situées dans /etc/apache2
selon les versions, tu pourrais aussi avoir à aller dans un répertoire plus profond: /etc/apache2/sites-available

Là, un fichier comme default.conf sera à modifier

D'une autre machine tu accéderas à ton contenu par la même méthode que sous Windows, c'est-à-dire, en donnant l'adresse spécifique. Fais attention, cependant, Linux est sensible à la casse, pas Windows. D'une autre machine, tu pourras donc accéder via une adresse comme
http://MonOrdi/MesSites/

pour une configuration comme
Alias /MesSites/ "/Chemin/Acces_complet/A_mes_sites/LeSite_EnParticulier/"
<Directory "/Chemin/Acces_complet/A_mes_sites/LeSite_EnParticulier/">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
Dans ton ordinateur qui s'appelle "MonOrdi"
Soyez artisans de paix