Skip to content

Référence des ports

Port 3306 (TCP) – MySQL / MariaDB

Écouteur par défaut des connexions aux bases relationnelles MySQL et MariaDB.

tcpRegisteredSouvent attaqué

État par défaut

Les paquets modernes se lient à localhost (127.0.0.1) par défaut, mais de nombreux déploiements fixent bind-address à 0.0.0.0, exposant 3306 sur le réseau ou à Internet.

Attaques courantes

  • Force brute et pulvérisation de mots de passe contre root et les comptes applicatifs
  • Exploitation de mots de passe vides ou par défaut
  • Abus de privilèges et exfiltration de données via FILE après connexion
  • Injection SQL pivotant vers le moteur de base de données

Durcissement

  • Lier à localhost ou à une interface privée ; ne jamais exposer 3306 à Internet
  • Supprimer les comptes anonymes et à mot de passe vide (exécuter mysql_secure_installation)
  • Imposer des mots de passe forts, le moindre privilège et des utilisateurs restreints par hôte
  • Exiger TLS pour les connexions clientes et segmenter avec des pare-feu
  • Maintenir MySQL/MariaDB à jour et surveiller les échecs de connexion

Commande nmap

nmap -p3306 --script mysql-info,mysql-empty-password <target>

Remplacez <target> par l’hôte ou la plage que vous êtes autorisé à scanner.

Que tourne sur le port 3306 ?

Le port 3306 est l'écouteur TCP par défaut de MySQL et de son fork compatible MariaDB, deux des bases relationnelles les plus déployées. Les serveurs d'application et les clients d'administration se connectent via 3306 pour exécuter des requêtes SQL sur des schémas qui alimentent souvent des sites web, des produits SaaS et des applications internes.

Pourquoi c'est important pour la sécurité

MySQL et MariaDB stockent les données de très nombreuses applications ; 3306 est donc une cible de choix. Le danger s'aggrave lorsque bind-address vaut 0.0.0.0, exposant la base à tout le réseau ou à Internet. Combiné à des identifiants vides, par défaut ou faibles, cela mène directement au vol massif de données et au rançonnage, un schéma répété sur des milliers de bases ouvertes compromises.

Comment c'est attaqué

Les attaquants scannent les ports 3306 ouverts, puis lancent une force brute ou testent les mots de passe vides/par défaut. Après authentification, un compte aux privilèges étendus (ou doté du privilège FILE) peut vider des tables et exfiltrer des données, et l'injection SQL dans les applications web peut pivoter directement vers le moteur. Les bases compromises sont souvent effacées et réclamées contre rançon.

Liste de durcissement

Liez MySQL à localhost ou à une interface privée et gardez 3306 hors d'Internet, derrière un pare-feu, un VPN ou un tunnel SSH. Exécutez mysql_secure_installation pour supprimer les comptes anonymes et à mot de passe vide, imposez des mots de passe forts et des droits restreints par hôte au moindre privilège, et exigez TLS. Appliquez les correctifs régulièrement et surveillez les échecs de connexion. Utilisez l'extrait nmap ci-dessus pour détecter les mots de passe vides et collecter des informations sur les hôtes que vous êtes autorisé à tester.

Ports liés

Questions fréquentes

Est-il sûr d'exposer le port 3306 à Internet ?
Non. Un MySQL exposé à Internet est constamment scanné et soumis à la force brute. Liez-le à localhost ou à un réseau privé et connectez-vous via un VPN, un tunnel SSH ou TLS.
Pourquoi mon MySQL écoute-t-il sur 0.0.0.0 ?
Parce que bind-address est réglé sur 0.0.0.0, souvent pour autoriser des serveurs d'application distants. Restreignez-le à une interface privée et limitez le port par pare-feu aux hôtes de confiance.