Référence des ports
Port 3306 (TCP) – MySQL / MariaDB
Écouteur par défaut des connexions aux bases relationnelles MySQL et MariaDB.
En bref
- Transport
- tcp
- Catégorie
- Registered
- Niveau de risque
- Élevé
Souvent ciblé — limitez l'exposition et durcissez-le.
É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.
À quoi sert le port 3306 ?
Le port 3306 est le port TCP par défaut de MySQL et de son fork compatible MariaDB,
deux des bases relationnelles les plus utilisées. Les serveurs d'application et les
outils d'administration — applications web, WordPress, et clients comme MySQL
Workbench, DBeaver ou la ligne de commande mysql — se connectent via 3306 pour
exécuter des requêtes SQL sur des bases qui alimentent sites web, produits SaaS et
applications internes.
Quand faut-il l'ouvrir ?
Vous ouvrez le 3306 quand une application ou un outil d'administration sur une autre machine doit atteindre votre serveur MySQL/MariaDB. Le cas courant est un serveur web distinct se connectant à la base ; sinon il reste lié à localhost. Ne l'autorisez qu'aux hôtes de confiance précis qui en ont besoin, idéalement sur un réseau privé.
Est-ce risqué de l'ouvrir ?
Les bases sur le 3306 sont très scannées et soumises à la force brute, et une base exposée peut entraîner un vol total des données. Gardez-la liée à localhost ou à un réseau privé, utilisez des mots de passe forts, exigez TLS, et atteignez-la via un VPN ou un tunnel SSH. Voir les notes de sécurité ci-dessous.
Comment vérifier si ce port est ouvert
ss -tulpn | grep :3306
nmap -p 3306 <target>netstat -ano | findstr :3306
Test-NetConnection <host> -Port 3306lsof -i :3306
nmap -p 3306 <target>Comment ouvrir ce port sur votre box/routeur
Pour joindre ce service depuis l'extérieur de votre réseau, redirigez le port sur votre box :
- Ouvrez la page d'administration de votre box (souvent http://192.168.1.1 ou http://192.168.0.1) et connectez-vous.
- Trouvez la section « Redirection de ports » — parfois appelée NAT, Serveur virtuel ou NAT/PAT.
- Ajoutez une règle redirigeant le port externe 3306 vers l'IP locale de votre appareil, port interne 3306, protocole TCP.
- Enregistrez, redémarrez la box si demandé, puis testez le port depuis l'extérieur de votre réseau.
Ne redirigez que des ports que vous maîtrisez — cela expose l'appareil à Internet. Pour un accès distant d'administration, un VPN est plus sûr que la redirection de port.
Autoriser ce port dans le pare-feu
sudo ufw allow 3306/tcpsudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reloadsudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPTNew-NetFirewallRule -DisplayName "Allow 3306" -Direction Inbound -Protocol TCP -LocalPort 3306 -Action AllowSécurité et risques
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
Comment bloquer ce port
sudo ufw deny 3306/tcpsudo firewall-cmd --permanent --remove-port=3306/tcp
sudo firewall-cmd --reloadsudo iptables -A INPUT -p tcp --dport 3306 -j DROPNew-NetFirewallRule -DisplayName "Block 3306" -Direction Inbound -Protocol TCP -LocalPort 3306 -Action BlockCommande nmap
nmap -p3306 --script mysql-info,mysql-empty-password <target>Remplacez <target> par l’hôte ou la plage que vous êtes autorisé à scanner.
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.