Port 3306 MYSQL
Port 3306 is the IANA-assigned mysql port for MySQL (TCP / UDP).
What is port 3306 used for?
Port 3306 is assigned to mysql and uses TCP / UDP. The IANA registry describes the service as “MySQL”. It sits in the registered range, the block used by databases, application servers and developer tooling. Port conflicts here are common when several local services start at once.
Ports are the transport-layer address a service listens on. A client that wants to reach mysql connects to port 3306. A TCP connection is refused when nothing is listening, while a UDP request simply goes unanswered. That is why a port conflict appears whenever two processes try to bind the same number.
Use the commands below to confirm whether port 3306 is actually in use before you change firewall rules. Blocking the port stops new inbound traffic at the firewall, but it does not stop a local process from listening, and it does not remove the service from the machine.
Source: IANA Service Name and Transport Protocol Port Number Registry. Registered assignee: [Monty].
Check and block port 3306
Copy-ready commands for the protocols assigned to this port. Run the check first, then block only what should not be reachable.
Check on Linux
sudo ss -tlpn 'sport = :3306'
sudo ss -ulpn 'sport = :3306'Check on Windows
Get-NetTCPConnection -LocalPort 3306 -State Listen -ErrorAction SilentlyContinue
Get-NetUDPEndpoint -LocalPort 3306 -ErrorAction SilentlyContinueBlock with UFW
sudo ufw deny 3306/tcp
sudo ufw deny 3306/udpBlock with iptables
sudo iptables -A INPUT -p tcp --dport 3306 -j DROP
sudo iptables -A INPUT -p udp --dport 3306 -j DROPThese commands are examples for a typical host. Check the listener before you change firewall rules, and persist iptables rules with iptables-save or netfilter-persistent. On Windows, use Windows Defender Firewall or New-NetFirewallRule for persistent blocks. The iptables rules here cover IPv4; mirror them with ip6tables if IPv6 is enabled.
Is port 3306 safe to expose?
MySQL should only be reachable from application servers. Use allowlists, strong passwords and TLS; avoid binding it to 0.0.0.0. Expose this port only when the service is actually needed. Keep it patched, prefer an encrypted alternative, and limit source addresses with a firewall allowlist.
Where port 3306 is usually used
Most traffic on port 3306 falls into these scenarios. The demo below is a safe way to confirm the listener before you change anything.
- Application servers opening pooled connections to the database on port 3306.
- Migrations, backups and reporting jobs run from a trusted bastion host.
- Local Docker or test environments that publish the database on the host.
Open a MySQL session
Connect with a least-privilege account; the prompt asks for the password instead of putting it in shell history.
mysql -h 127.0.0.1 -P 3306 -u appuser -p
Common problems with port 3306
Connection refused or timed out
Refused usually means the host is reachable but nothing is listening on port 3306. A timeout more often means a firewall drop, a wrong host or a service bound to a different interface.
Port already in use
Find the process holding the port with sudo ss -tlpn 'sport = :3306' or sudo lsof -i :3306. Stop that process or configure it to bind another port; killing it without identifying it can take down a production service.
Firewall rule did not survive a reboot
UFW and Windows Firewall keep rules across restarts. Raw iptables rules do not: save them with iptables-save or the netfilter-persistent package, and re-apply after upgrades that reset the ruleset.
The port is blocked but still reachable
A firewall rule filters inbound traffic; it does not close the listener. Confirm with the check command above and bind the service to 127.0.0.1 when only local clients need it.
Port 3306 at a glance
| Port number | 3306 |
|---|---|
| Service name | mysql |
| Transport protocol | TCP / UDP |
| Category | Databases |
| Range | Registered port (1024–10000) |
| Risk level | Medium |
| Registered assignee | [Monty] |
| Registry description | MySQL |
| Source | IANA Service Name and Transport Protocol Port Number Registry |
Frequently asked questions
What is port 3306 used for?
Port 3306 (MYSQL) uses TCP / UDP. MySQL.
How do I check if port 3306 is open?
On Linux run `sudo ss -tlpn 'sport = :3306'` and `sudo ss -ulpn 'sport = :3306'`. On Windows run `Get-NetTCPConnection -LocalPort 3306 -State Listen -ErrorAction SilentlyContinue` and `Get-NetUDPEndpoint -LocalPort 3306 -ErrorAction SilentlyContinue` in PowerShell. If the port is open, the output shows a process listening on port 3306; empty output usually means nothing is bound to it.
How do I block port 3306?
With UFW run `sudo ufw deny 3306/tcp` and `sudo ufw deny 3306/udp`. With iptables run `sudo iptables -A INPUT -p tcp --dport 3306 -j DROP` and `sudo iptables -A INPUT -p udp --dport 3306 -j DROP`. Persist the iptables rules with your distribution's netfilter-persistent or iptables-save tooling so they survive a reboot.
Is port 3306 safe to expose?
MySQL should only be reachable from application servers. Use allowlists, strong passwords and TLS; avoid binding it to 0.0.0.0. Nevertheless, expose this port only when the service is actually needed. Keep it patched, prefer an encrypted alternative, and limit source addresses with a firewall allowlist.
Related ports
- Port 3301 · tarantoolTarantool in-memory computing platform
- Port 3312 · appman-serverApplication Management Server
- Port 2786 · aic-oncrpcaic-oncrpc - Destiny MCD database
- Port 3835 · spectardbSpectar Database Rights Service
- Port 2278 · s3dbSimple Stacked Sequences Database
- Port 3938 · dbcontrol-agentOracle dbControl Agent po IANA assigned this well-formed service name…
Primary data: IANA Service Name and Transport Protocol Port Number Registry.
Last reviewed 2026-10-30 · Methodology · About · Privacy