Pages : 1
#1 Le 26/03/2015, à 11: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, à 13: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, à 13: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, à 13:56)
#4 Le 26/03/2015, à 14: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, à 14: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, à 14:33)
Hors ligne
#6 Le 26/03/2015, à 14: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, à 14:36)
Hors ligne
#7 Le 26/03/2015, à 14: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 ?
#8 Le 26/03/2015, à 14: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, à 14:50)
Hors ligne
#9 Le 26/03/2015, à 14: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, à 15:07
- bruno
Re : connexion pdo sur serveur mysql distant
Visiblement tu as fait une erreur sur ton adresse IP.
#11 Le 26/03/2015, à 15: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, à 15: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
Pages : 1