Le serveur MySQL n'est pas accessible à partir d'une machine distante

14

J'ai installé le serveur MySQL sur mon serveur Ubuntu local (11.10). Je ne peux pas me connecter au serveur depuis une machine distante.

Quand j'ai essayé: - nmap localhost , il montre ce qui suit

SERVICE DE L'ÉTAT DU PORT
22 / TCP Open SSH
80 / TCP ouvert http
139 / TCP ouvert NetBIOS-SSN
Microsoft-ds ouvert 445 / tcp
631 / TCP Open IPP
3306 / tcp ouvrir mysql

Cela signifie que 3306, le port MySQL est ouvert, non? Mais quand j'ai essayé nmap 192.168.0.50, qui est l'IP du serveur, j'obtiens ce qui suit: -

SERVICE DE L'ÉTAT DU PORT
22 / TCP Open SSH
80 / TCP ouvert http
139 / TCP ouvert NetBIOS-SSN
Microsoft-ds ouvert 445 / tcp

Est-ce à dire que le port n'est pas ouvert lors de l'accès via IP? Si oui, comment puis-je ouvrir le port?

J'avais essayé le code suivant, mais il semble que cela n'a pas fonctionné.

sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

Qu'est-ce qui ne va pas ici?

Sparky
la source

Réponses:

22

Votre service MySQL est destiné à servir localhost uniquement (liaison d'interface). Il s'agit de la valeur par défaut pour des raisons de sécurité. Si vous avez vraiment besoin d'y accéder directement à partir d'autres hôtes, il existe une belle façon d'activer l'accès à distance à MySQL sur Ubuntu que vous pouvez suivre:

  1. en tant que root, ouvrez votre /etc/mysql/my.cnfou /etc/mysql/mysql.conf.d/mysqld.cnf avec votre éditeur préféré, car sur différents systèmes, il s'avère différent.
  2. recherchez la [mysqld]section, et là-bas pour le bind-addressmot - clé. Ceci est généralement réglé sur 127.0.0.1- modifiez-le pour qu'il corresponde à votre adresse IP "normale"
  3. enregistrer le fichier et recharger le service (par exemple en utilisant service mysql restart)

N'oubliez pas que vous devez autoriser vos utilisateurs distants à accéder à leurs bases de données à distance, en définissant les GRANT appropriés - par exemple

GRANT ALL ON mydb.* TO remoteuser@'%' IDENTIFIED BY 'SomePASSWORD';

Notez le @'%', ce qui signifie "de n'importe quel hôte".

Izzy
la source
Heureux de lire - et vous êtes les bienvenus!
Izzy
lien rompu :(
dino
2
@dino Plus. J'ai corrigé cela et j'ai également inclus un extrait, donc s'il meurt à nouveau, les étapes requises sont toujours là. Mon mal, je ne l'ai pas fait depuis le début - mais comme vous pouvez le voir sur l'horodatage, c'était l'une de mes premières réponses. Nous apprenons tous :)
Izzy
2
Le champ d'adresse de liaison était sous /etc/mysql/mysql.conf.d/mysqld.cnfpour mon système.
Eric G
@EricG Merci pour le pointeur. Ma réponse était il y a 5 ans, donc les configurations ont un peu changé (et probablement rendues plus modulaires).
Izzy