Registered port (1024–10000) Medium risk

Port 3306 MYSQL

Quick answer

Port 3306 is the IANA-assigned mysql port for MySQL (TCP / UDP).

TransportTCP / UDP
RiskMedium
Typical useDatabases

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.

Browse all Databases ports

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 SilentlyContinue

Block with UFW

sudo ufw deny 3306/tcp sudo ufw deny 3306/udp

Block with iptables

sudo iptables -A INPUT -p tcp --dport 3306 -j DROP sudo iptables -A INPUT -p udp --dport 3306 -j DROP

These 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?

Medium

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.

Demo

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 number3306
Service namemysql
Transport protocolTCP / UDP
CategoryDatabases
RangeRegistered port (1024–10000)
Risk levelMedium
Registered assignee[Monty]
Registry descriptionMySQL
SourceIANA 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.

See all Databases ports

Primary data: IANA Service Name and Transport Protocol Port Number Registry.

Last reviewed 2026-10-30 · Methodology · About · Privacy