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 26/03/2015, à 12:40

denis2001

connexion pdo sur serveur mysql distant

Bonjour

J'essaie d'établir un script de connexion d'un serveur local vers un serveur distant en pdo.
Je voudrais pour des raisons de sécurité ne pas commenter la ligne bine-address du fichier de configuration de mysql.

J'ai créer un utilisateur mysql avec les droit de connexion depuis l'extérieur (%) qui fonctionne quand je commente la ligne bind-adress pour vérification.

J'ai essayé d'ouvrir le pare-feu avec les lignes suivantes

ACCEPT     all  --  ip_public_du_serveur_interne  anywhere
ACCEPT     tcp  --  ip_public_du_serveur_interne  anywhere             tcp dpt:3307
ACCEPT     tcp  --  ip_public_du_serveur_interne  anywhere             tcp dpt:mysql

J'ai essayé d'utiliser la fonction ssh2 mais je ne trouve pas le moyen de la "compiler" avec les requêtes PDO. Bref, depuis deux jour, moultes recherches sur le net et un tas d'essais (dont ssh2_exec). En regardant les logs ssh (var/log/auth.log) je vois la connexion qui s'ouvre et se ferme, mais que je mettes localhost, 127.0.0.1 ou l'IP de mon serveur distant dans ma requête PDO, mysql refuse la connexion.

Si quelqu'un a une piste je suis preneur.
Merci pour votre attention et votre aide.

Hors ligne

#2 Le 26/03/2015, à 14:19

denis2001

Re : connexion pdo sur serveur mysql distant

Ce que je ne comprends pas, c'est pourquoi quand on créée un utilisateur mysql on peut lui attribuer la possibilité qu'il se connecte de n'importe où en mettant % dans son host si cela n'est pas utilisable !

Hors ligne

#3 Le 26/03/2015, à 14:55

bruno

Re : connexion pdo sur serveur mysql distant

Pour qu'un utilisateur puisse se connecter directement à un serveur MySQL distant il faut qu'il y soit autorisé par la valeur host de la table user (base mysql) et que le serveur MySQL soit en écoute sur une adresse accessible de l'extérieur (autre que la boucle locale 127.0.0.0/8)

Dernière modification par bruno (Le 26/03/2015, à 14:56)

Hors ligne

#4 Le 26/03/2015, à 15:09

denis2001

Re : connexion pdo sur serveur mysql distant

Bonjour Bruno
Et merci. Pour la valeur host de la table user, c'est bon, par contre, ce que je ne trouve pas c'est comment mettre en place que le serveur MySQL soit en écoute sur une adresse accessible de l'extérieur (autre que la boucle locale 127.0.0.0/8).
Je vais utiliser ton expression pour une recherche, mais si tu as un piste, je suis preneur.
En tout cas, merci de t'être intéressé au problème.
D.

Hors ligne

#5 Le 26/03/2015, à 15:23

denis2001

Re : connexion pdo sur serveur mysql distant

Donc j'ai essayé avec

iptables -I INPUT -p tcp -m tcp -s NUM_IP_PUBLIC_SERVEUR_LOCAL --dport 3306 -j ACCEPT
iptables -A INPUT -i eth0 -s NUM_IP_PUBLIC_SERVEUR_LOCA -p tcp --destination-port 3306 -j ACCEPT

Mais ça ne fonctionne pas.

Dernière modification par denis2001 (Le 26/03/2015, à 15:33)

Hors ligne

#6 Le 26/03/2015, à 15:34

denis2001

Re : connexion pdo sur serveur mysql distant

Et si je mets bind-address   = IP_PUBLIC_SERVEUR_INTERNE et que je relance mysql, celui-ci ne redémarre pas !

Dernière modification par denis2001 (Le 26/03/2015, à 15:36)

Hors ligne

#7 Le 26/03/2015, à 15:40

bruno

Re : connexion pdo sur serveur mysql distant

Quel est le message d'erreur quand tu tentes de relancer mysql ? Que se passe-t-il si tu commentes simplement la ligne bind-address = w.x.y.z ?

Hors ligne

#8 Le 26/03/2015, à 15:43

denis2001

Re : connexion pdo sur serveur mysql distant

Donc je fais service mysql restart
et j'ai
mysql stop/waiting
start: Job failed to start

Dernière modification par denis2001 (Le 26/03/2015, à 15:50)

Hors ligne

#9 Le 26/03/2015, à 15:56

denis2001

Re : connexion pdo sur serveur mysql distant

Dans les log j'ai :

150326 14:53:30 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
150326 14:53:30 [Note] Plugin 'FEDERATED' is disabled.
150326 14:53:30 InnoDB: The InnoDB memory heap is disabled
150326 14:53:30 InnoDB: Mutexes and rw_locks use GCC atomic builtins
150326 14:53:30 InnoDB: Compressed tables use zlib 1.2.3.4
150326 14:53:30 InnoDB: Initializing buffer pool, size = 128.0M
150326 14:53:31 InnoDB: Completed initialization of buffer pool
150326 14:53:31 InnoDB: highest supported file format is Barracuda.
150326 14:53:31  InnoDB: Waiting for the background threads to start
150326 14:53:32 InnoDB: 5.5.41 started; log sequence number 35910793
150326 14:53:32 [Note] Server hostname (bind-address): 'MON_IP_DE_SERVEUR_LOCAL_DEPUIS_LEQUEL_JE_VEUX_ME_CONNECTER'; port: 3306
150326 14:53:32 [Note]   - 'MON_IP_DE_SERVEUR_LOCAL_DEPUIS_LEQUEL_JE_VEUX_ME_CONNECTER' resolves to 'MON_IP_DE_SERVEUR_LOCAL_DEPUIS_LEQUEL_JE_VEUX_ME_CONNECTER';
150326 14:53:32 [Note] Server socket created on IP: 'MON_IP_DE_SERVEUR_LOCAL_DEPUIS_LEQUEL_JE_VEUX_ME_CONNECTER'.
150326 14:53:32 [ERROR] Can't start server: Bind on TCP/IP port: Cannot assign requested address
150326 14:53:32 [ERROR] Do you already have another mysqld server running on port: 3306 ?
150326 14:53:32 [ERROR] Aborting

Hors ligne

#10 Le 26/03/2015, à 16:07

bruno

Re : connexion pdo sur serveur mysql distant

Visiblement tu as fait une erreur sur ton adresse IP.

Hors ligne

#11 Le 26/03/2015, à 16:27

denis2001

Re : connexion pdo sur serveur mysql distant

Don, j'ai vérifié avec les personne qui gère le fortiguet.
Le serveur est un serveur interne en 192.168.1.21, et le flux sortait par l'adsl free et avait l'ip public de notre ligne free. Comme nous avons une seconde SDSL, j'ai demandé que le serveur sorte par cette ligne et donc son IP public a changé. J'ai fait le test par la nouvelle IP et cela ne change rien.

Peut-être le fait de ne pas avoir une IP directe pose-t-il problème ?

Est-ce que je peux faire un truc du genre dans le bind-address IP_PUBLIC/192.168.1.21 ? Et dans ce cas, prévenir qu'au niveau du fortiguet on laisse passer le flux qui vient du serveur externe.

Étant autodidacte par la force des choses de mon poste, c'est un peu comme avancer avec un bandeau sur les yeux dans un chemin boueux par temps de brouillard !

En tout cas, merci de ton aide et de ta patience.

Hors ligne

#12 Le 26/03/2015, à 16:55

denis2001

Re : connexion pdo sur serveur mysql distant

Juste pour préciser. Quand je me connecte en console et que je regarde les log ssh, je vois bien l'IP public du serveur que j'ai mis. Ce serait donc bien parce que cet IP n'est pas directement celle du serveur que cela pose problème.
Merci de ton aide.
J'essaierais de régler cela la semaine prochaine.

Hors ligne