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 05/04/2019, à 15:32

l'AMI Yves

[RESOLU] Mysql : donner l'accès à tout un sous-réseau ?

Bonjour à tous.

Je ne trouve pas de réponse à une question qui me parait pourtant toute simple : sur mon serveur (Ubuntu 18.04 LTS) il y a deux cartes réseau : l'une regarde vers le Web, l'autre vers le réseau local. Il y a aussi un serveur LAMP. Je veux en réserver l'accès aux utilisateurs du réseau local (et donc l'interdire depuis le Web). Eh bien je ne trouve pas comment faire.

Dans mysqld.cnf, il y a une commande "bind-address", que j'avais d'abord interprétée comme  "écouter sur cette interface" (et donc ne pas écouter sur une autre). Aujourd'hui, j'ai voulu paramétrer le driver ODBC sur mon poste Windows 10 du réseau local, mais j'ai reçu le message comme quoi le driver ODBC mysql ne pouvait pas se connecter sur le serveur MySQL sur son adresse IP (erreur 10061)

J'en déduis que "bind-address" identifie plus les clients que l'adresse IP sur laquelle il écoute. Mais toutes mes recherches butent sur cette ambiguïté : on me propose de la mettre à 0.0.0.0, ce qui signifie qu'il va  écouter sur les deux interfaces. On me dit aussi qu'il est possible d'empêcher ça avec le pare-feu, mais je trouve ça absurde. J'ai essayé l'adresse 192.168.1.0, mais là, au redémarrage de mysql, ça a planté. C'est tout ou rien ?

Y a-t-il quelque chose que j'ai zappé ?

Merci d'avance.

AMIcalement.

Dernière modification par l'AMI Yves (Le 06/04/2019, à 17:11)

Hors ligne

#2 Le 05/04/2019, à 17:10

krodelabestiole

Re : [RESOLU] Mysql : donner l'accès à tout un sous-réseau ?

si tu as un serveur lamp, php tourne sur la même machine que mysql, et c'est php qui se connecte à mysql, il n'y a a priori aucune raison d'autoriser l'accès à mysql depuis une autre machine (réseau local ou pas)...

tu es sûr que c'est pas plutôt apache que tu veux limiter à n'écouter que l'une de tes interfaces réseau ?

Hors ligne

#3 Le 05/04/2019, à 17:24

DarkBahhh

Re : [RESOLU] Mysql : donner l'accès à tout un sous-réseau ?

Salut L'AMI Yves,

Le questionnement de krodelabestiole est intéressant, après une connexion distante à sa BD ca peut être utile.

Il me semble que bind-address est la bonne variable.

Sinon a tu penser à créer le user MySQL distant dans la base de données mysqll (user@IPclient)

Aussi vérifier le port d'écoute configuré pour MySQL et le port configuré distant sur le client.

Ptete même pour finir, un firewall qu'on aurai oublier peut nous embêter.

Hors ligne

#4 Le 05/04/2019, à 21:45

l'AMI Yves

Re : [RESOLU] Mysql : donner l'accès à tout un sous-réseau ?

@krodelabestiole : j'ai l'intension (ça n'est pas encore fait) d'écrire un serveur php/mysql sur ce serveur, qui sera disponible pour les utilisateurs de ce réseau, et qui aura pour but la consultation et l'enrichissement de cette base de données. Mais le projet actuel, qui a motivé ce fil, est l'approvisionnement "en masse" de la base de données, à partir de données présentes dans une feuille excel sur un poste du réseau : il s'agit donc bien, dans ce cas, d'attaquer directement la BDD depuis le réseau. Et le fait que Google me suggère de donner la valeur 0.0.0.0 à bind-addresse indique bien que c'est possible (de même que la disponibilité de drivers ODBC, dont c'est justement la raison d'être).
@DarkBahhh Le user que j'ai utilisé est le même que celui que j'utilise avec phpmyadmin. Tu me cites "user@IPclient" : ça ne me parle pas. Veux-tu dire qu'il faut créer un autre client (même avec même nom/password) sur une autre adresse ?
Pour ce qui est du firewall, j'ai parfaitement accès à phpmyadmin depuis mon poste, donc cette adresse n'est pas bloquée. Je n'ai pas joué avec les ports dans iptables, donc ça me parait clair...
Mais je voudrais qu'on m'explique : je comprends très bien que, dans le cas où le serveur a plusieurs adresses ip (sur la même interface ou sur plusieurs), on ait besoin de configurer mysql pour écouter sur l'une et pas sur l'autre. Je comprends très bien d'autre part que l'on puisse désirer donner accès à mysql à certanes adresses du (ou des) réseau, et l'interdire à d'autres. Mais je ne comprends pas qu'il soit prévu de faire ça avec le MEME paramètre !

AMIcalement.

Hors ligne

#5 Le 06/04/2019, à 07:35

bruno

Re : [RESOLU] Mysql : donner l'accès à tout un sous-réseau ?

Pour des raisons évidentes de sécurité, le serveur MySQL est configuré par défaut pour n'écouter que sur l'interface de bouclage :

bind-address=127.0.0.1

Il suffit de commenter cette directive pour qu'il soit en écoute sur toutes les interfaces et donc accessible depuis n'importe quelle machine du résseau. Si tu veux être plus restrictif, tu peux y mettre l'adresse IP privée du serveur, exemple :

bind-address=192.168.0.54

Ensuite il faut que tu aies au moins un utilisateur autorisé à se connecter depuis une autre machine. L'authentification des utilisateurs se fait par nom d'utilisateur + hôte (ou adresse IP) + mot de passe. Généralement les utilisateurs sont créés avec localhost comme hôte (toujours pour des raisons de sécurité).

Si tu veux que toto puisse se connecter depuis la machine ayant l'adresse 192.168.0.98 il te faut un utilisateur toto@192.168.0.98. Voir la doc mysql pour créer ou modifier des utilisateurs.

https://dev.mysql.com/doc/refman/5.7/en … -user.html

Hors ligne

#6 Le 06/04/2019, à 08:13

l'AMI Yves

Re : [RESOLU] Mysql : donner l'accès à tout un sous-réseau ?

Merci, Bruno, pour expliquer tout à fait clairement ce que j'avais à peu près compris des indications plutôt confuses qui se trouvent grâce à Google.

Mais tu n'as apparemment pas bien cerné mon problème : ce que j'aurais voulu, c'est que les utilisateurs autorisés à ouvrir une session sur mon réseau (géré avec DHCP) soient aussi autorisés à accéder à MySQL.

Je pense avoir parfaitement bien compris les contraintes de sécurité, mais je n'arrive toujours pas à comprendre pourquoi les développeurs pensent toujours que les utilisateurs ne sont pas capables de gérer ces questions eux-même. Qu'ils le fassent par défaut, soit, mais qu'ils ne me laissent pas la possibilité de le faire moi-même, ça me dépasse.

Hors ligne

#7 Le 06/04/2019, à 08:27

bruno

Re : [RESOLU] Mysql : donner l'accès à tout un sous-réseau ?

l'AMI Yves a écrit :

Mais tu n'as apparemment pas bien cerné mon problème : ce que j'aurais voulu, c'est que les utilisateurs autorisés à ouvrir une session sur mon réseau (géré avec DHCP) soient aussi autorisés à accéder à MySQL.

C'est quoi les utilisateurs autorisés à ouvrir une session sur le réseau ? Quel rapport avec DHCP ? Que veut-tu dire par « autorisés à accèder à MySQL ?
Je n'ai pas bien cerné parce que c'est confus. Tu mélanges des concepts différents qui n'ont a priori pas de rapport entre eux : les utilisateurs d'un système et les utilisateurs d'un SGBD.


l'AMI Yves a écrit :

Je pense avoir parfaitement bien compris les contraintes de sécurité, mais je n'arrive toujours pas à comprendre pourquoi les développeurs pensent toujours que les utilisateurs ne sont pas capables de gérer ces questions eux-même. Qu'ils le fassent par défaut, soit, mais qu'ils ne me laissent pas la possibilité de le faire moi-même, ça me dépasse.

Tu as tout à fait la possibilité de gérer cela la toi-même. J'ai indiqué comment faire. Avant de mettre en cause les outils et ceux qui les conçoivent, il faut s'assurer de parfaitement comprendre leurs usages et leur fonctionnement.

Hors ligne

#8 Le 06/04/2019, à 08:58

l'AMI Yves

Re : [RESOLU] Mysql : donner l'accès à tout un sous-réseau ?

Je suis bien désolé de savoir si mal m'expliquer. A moi, ça me parait pourtant clair : tu m'as indiqué comment autoriser toto à accéder au SGBD :

Bruno a écrit :

Si tu veux que toto puisse se connecter depuis la machine ayant l'adresse 192.168.0.98 il te faut un utilisateur toto@192.168.0.98

Cela suppose, bien sûr, que toto soit un utilisateur du réseau (en termes Microsoft, qu'il ait ouvert une session à son nom, et que sa station ait l'adresse en question. ) Sur mon réseau (et je crois que c'est tout à fait classique) les adresses sont attribuées par un serveur DHCP. Il tout à fait certain que je ne connais pas la configuration d'un serveur DHCP jusque dans ses moindres détails. La seule chose que je sache faire pour réserver une adresse fixe, c'est utiliser l'adresse MAC du poste. Ce qui veut dire que je ne sais pas réserver une adresse fixe à un utilisateur. Si c'est possible, alors, c'est ça la solution. Mais je ne pense pas que ce soit possible, car l'adresse de la station est fixée avant l'ouverture de session, que je sache.

Est-ce que tu penses toujours que j'associe des choses qui n'ont rien à voir entre elles ?

Hors ligne

#9 Le 06/04/2019, à 09:26

bruno

Re : [RESOLU] Mysql : donner l'accès à tout un sous-réseau ?

l'AMI Yves a écrit :

Cela suppose, bien sûr, que toto soit un utilisateur du réseau (en termes Microsoft, qu'il ait ouvert une session à son nom, et que sa station ait l'adresse en question. )

Non, mauvaise supposition. Les « utilisateurs du réseau » n'ont rien à voir avec les utilisateurs MySQL.

l'AMI Yves a écrit :

Sur mon réseau (et je crois que c'est tout à fait classique) les adresses sont attribuées par un serveur DHCP. Il tout à fait certain que je ne connais pas la configuration d'un serveur DHCP jusque dans ses moindres détails. La seule chose que je sache faire pour réserver une adresse fixe, c'est utiliser l'adresse MAC du poste. Ce qui veut dire que je ne sais pas réserver une adresse fixe à un utilisateur. Si c'est possible, alors, c'est ça la solution. Mais je ne pense pas que ce soit possible, car l'adresse de la station est fixée avant l'ouverture de session, que je sache.

Une adresse IP est attribuée pour une machine pas pour un utilisateur.
Si MySQL a un utilisateur toto@192.168.0.98 cela signifie que l'utilisateur MySQL toto est autorisé à se connecter au serveur MySQL depuis l'adresse IP 192.168.0.98.

l'AMI Yves a écrit :

Est-ce que tu penses toujours que j'associe des choses qui n'ont rien à voir entre elles ?

Oui wink

Dernière modification par bruno (Le 06/04/2019, à 09:27)

Hors ligne

#10 Le 06/04/2019, à 14:56

l'AMI Yves

Re : [RESOLU] Mysql : donner l'accès à tout un sous-réseau ?

Bruno a écrit :

Non, mauvaise supposition. Les « utilisateurs du réseau » n'ont rien à voir avec les utilisateurs MySQL.

Mais comment pourraient-ils être utilisateurs de MySQL sans être utilisateurs du réseau ?

Il me semble vraiment que c'est toi qui prend les choses à l'envers (et, en tout cas, tu ne parviens pas à me convaincre que c'est moi !).

Es-tu bien d'accord que si Toto veut être utilisateur de MySQL, il doit être connecté au réseau sur lequel est présent le serveur MySQL en question ? Il est donc assis devant un ordinateur et a ouvert une session sur le réseau (dans mon cas, il s'agit d'un réseau Active Directory, mais ça n'a rien à voir, le problème serait le même si c'était un réseau beaucoup plus simple, avec un poste Linux). Ce poste obtient une adresse IP à la mise sous tension, auprès du serveur DHCP qui dessert ce segment (nous sommes dans un cadre "pseudo professionnel", où les postes sont plus ou moins banalisés, et où divers utilisateurs peuvent se connecter depuis divers ordinateurs).

Si MySQL a un utilisateur toto@192.168.0.98 cela signifie que l'utilisateur MySQL toto est autorisé à se connecter au serveur MySQL depuis l'adresse IP 192.168.0.98

Cette remarque à ce point de la discussion signifie, selon moi, que la conception même de MySQL introduit une contrainte forte (et à mes yeux totalement inutile) dans la gestion du réseau : ce que je désire mettre en place est INTERDIT par MySQL. C'est cela contre quoi je m'élève. Et je maintiens ma position : il y a une relation forte entre les autorisations d'accès à MySQL et DHCP.

Hors ligne

#11 Le 06/04/2019, à 15:46

bruno

Re : [RESOLU] Mysql : donner l'accès à tout un sous-réseau ?

Encore une fois tu mélanges tout…
Les utilisateurs MySQL et les utilisateurs de poste de travail sont indépendants, ils n'ont rien à voir entre eux.
Tu peux être yves sur ton poste de travail et te connecter en tant que toto à un service X ou Y (MySQL par exemple). De la même manière, tu n'as pas besoin d'avoir le même utilisateur sur le poste de travail et sur un compte FTP, mail, IRC ou n'importe quel autre service.

Je t'ai déjà expliqué comment mettre en place ce que tu veux. MySQL ne t'interdit rien, c'est juste que pour l'instant tu ne comprends pas certains concept de base.

Hors ligne

#12 Le 06/04/2019, à 16:14

l'AMI Yves

Re : [RESOLU] Mysql : donner l'accès à tout un sous-réseau ?

je ne vois pas comment on va sortir de ce dialogue de sourds...

Je suis bien d'accord que je peux ouvrir une session sur un poste au nom de "yves", et depuis là, me connecter au serveur MySQL sous le nom de "toto", ça n'empêchera pas que l'IP du poste en question, en fonction  de laquelle le serveur MySQL va décider s'il accepte la connexion ou non, sera ce que DHCP lui aura assigné, donc si, ce jour là, DHCP a assigné l'adresse 192.168.1.10, et que l'on a paramétré dans MySQL d'accepter "toto@192.168.1.10", yves pourra essayer tout ce qu'il voudra, il ne pourra pas obtenir l'accès.

Tout au moins, c'est ce que je comprends. Ai-je tort ?

Hors ligne

#13 Le 06/04/2019, à 16:30

bruno

Re : [RESOLU] Mysql : donner l'accès à tout un sous-réseau ?

en #8 :

La seule chose que je sache faire pour réserver une adresse fixe, c'est utiliser l'adresse MAC du poste

J'en ai conclu, peut-être à tort, que ce n'était donc pas un problème puisque tu sais assigner des IP fixes à tes postes.
Maintenant, tu peux toujours créer ou modifier un utilisateur pour lui ouvrir l'accès depuis n'importe quelle IP en utilisant le caractère % comme nom d'hôte (mauvaise pratique d'un point de vue sécurité).
Voir 3.8 de la doc mysql et
https://dev.mysql.com/doc/refman/5.7/en … names.html

Hors ligne

#14 Le 06/04/2019, à 16:49

l'AMI Yves

Re : [RESOLU] Mysql : donner l'accès à tout un sous-réseau ?

Ah !... Je vois qu'on commence à se comprendre. Donc MySQL est conçu de telle sorte que l'on n'a que deux choix : soit IP fixe, soit ouvert à tous les vents.

Est-ce que ça aurait demandé beaucoup plus de travail aux concepteurs d'avoir prévu un truc du genre "bind-address=192.168.1.0/24", par exemple, ou n'importe quoi qui ressemble à ce que l'on écrit quand on programme une plage d'adresse dans un serveur DHCP ?

Il me semblait bien que je n'étais pas si bouché (j'ai commencé à faire de l'informatique en 1974, et sur PC vers 1985...)

Merci de ta patience.

AMIcalement.

Hors ligne

#15 Le 06/04/2019, à 17:01

bruno

Re : [RESOLU] Mysql : donner l'accès à tout un sous-réseau ?

l'AMI Yves a écrit :

Est-ce que ça aurait demandé beaucoup plus de travail aux concepteurs d'avoir prévu un truc du genre "bind-address=192.168.1.0/24", par exemple, ou n'importe quoi qui ressemble à ce que l'on écrit quand on programme une plage d'adresse dans un serveur DHCP ?

Par ce que cela n'aurait pas de sens. Cette directive indique sur quelle interface réseau le serveur est en écoute. Encore une fois rien à voir avec un serveur DHCP…

doc mysql a écrit :

--bind-address=ip_address

On a computer having multiple network interfaces, use this option to select which interface to use for connecting to the MySQL server.

Si tu veux autoriser une utilisateur à se connecter depuis n'importe quel IP du sous-réseau 192.168.0.0/24, il faut le créer ou le modifier en mettant 192.168.0.% comme nom d’hôte (toto@192.168.0.%).

Hors ligne

#16 Le 06/04/2019, à 17:10

l'AMI Yves

Re : [RESOLU] Mysql : donner l'accès à tout un sous-réseau ?

Eh bien voilà ! C'est ça que je cherchais. C'est bien la peine de se donner tout ce mal. J'ai le sentiment de n'avoir rien dit d'autre depuis le début de cette discussion. Regarde seulement le titre de mon fil...

Je n'ai certes pas lu toute la doc disponible sur Internet à propos de MySQL, mais j'en ai lu quand-même pas mal : je n'ai vu nulle part cette façon d'utiliser le "%".
Cette fois, je la mets en "RESOLU"

Merci.

AMIcalement.

Hors ligne