Как открыть порт 3306 для на Windows 10 — вопрос, который возникает у разработчиков и администраторов при настройке удалённого доступа к базе данных. Порт 3306 по умолчанию используется MySQL для подключения клиентов, но в Windows 10 он часто блокируется брандмауэром. Без открытия порта вы не сможете подключиться к серверу извне, а локальные приложения могут выдавать ошибки типа Can't connect to MySQL server.
Решение сводится к двум шагам: настройке самого MySQL (разрешение подключений по сети) и открытию порта в брандмауэре Windows. В этой статье разберём оба этапа подробно, с учётом нюансов Windows 10 и версий MySQL 5.7–8.0. Если вы работаете с MariaDB, процесс аналогичен — порт по умолчанию там тоже 3306.
Почему порт 3306 может быть закрыт
В Windows 10 брандмауэр по умолчанию блокирует все входящие подключения, кроме разрешённых. Порт 3306 не входит в список исключений, поэтому MySQL не сможет принимать запросы из сети. Также проблема может быть в настройках самого сервера: если в конфиге my.ini или my.cnf не указано bind-address = 0.0.0.0, сервер слушает только локальный хост (127.0.0.1).
Другие причины:
- Антивирус или сторонний firewall (например, Kaspersky, NOD32) блокирует порт;
- Порт занят другим процессом (проверьте через
netstat -ano | findstr 3306); - MySQL не запущен как служба или работает в безопасном режиме;
- Провайдер блокирует порт на уровне роутера (актуально для удалённого доступа из интернета).
Сначала проверьте, слушает ли MySQL порт 3306 локально. Для этого выполните в командной строке:
telnet 127.0.0.1 3306
Если соединение устанавливается — проблема в брандмауэре или сетевых настройках. Если нет — проверьте конфигурацию MySQL.
Если команда telnet не работает, включите клиент Telnet в Windows через Панель управления → Программы и компоненты → Включение или отключение компонентов Windows.
| Команда | Описание | Пример вывода |
|---|---|---|
netstat -ano | findstr 3306 | Показывает процессы, использующие порт 3306 | TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING 1234 |
tasklist | findstr PID | Показывает имя процесса по его ID (PID) | mysqld.exe 1234 Services 0 12 000 K |
telnet localhost 3306 | Проверяет доступность порта локально | Connected to localhost или ошибка подключения |
Настройка для удалённого доступа
Прежде чем открывать порт в брандмауэре, нужно убедиться, что MySQL разрешает подключения по сети. Для этого:
Откройте файл конфигурации MySQL. Обычно он находится в:
C:\ProgramData\MySQL\MySQL Server X.Y\my.ini(для Windows-инсталлятора);C:\xampp\mysql\bin\my.ini(если используете XAMPP);/etc/mysql/my.cnf(для Linux, но актуально, если вы работаете с WSL).
Версию MySQL (X.Y) можно узнать через команду
mysql --version.Найдите строку
bind-address. По умолчанию она выглядит так:bind-address = 127.0.0.1Замените её на:
bind-address = 0.0.0.0Это позволит MySQL принимать подключения со всех IP-адресов. Если нужно ограничить доступ, укажите конкретный IP, например
bind-address = 192.168.1.100.Проверьте, что строка
skip-networkingзакомментирована (начинается с#) или отсутствует. Если она активна, MySQL не будет слушать сетевые подключения.
После изменений перезапустите службу MySQL:
net stop MySQL
net start MySQL
Если используете XAMPP, перезапустите Apache и MySQL через панель управления.
Создание пользователя для удалённого доступа
Даже если порт открыт, MySQL не позволит подключиться без пользователя с правами на удалённый доступ. По умолчанию пользователь root может подключаться только с локального хоста (localhost). Чтобы создать пользователя для удалённого доступа:
Подключитесь к MySQL через консоль или MySQL Workbench:
mysql -u root -pСоздайте пользователя (например,
remote_user) и дайте ему права:CREATE USER 'remote_user'@'%' IDENTIFIED BY 'ваш_пароль';
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;Здесь:
%означает, что подключение разрешено с любого IP. Для ограничения укажите конкретный адрес, например'192.168.1.100';ALL PRIVILEGES ON *.*даёт полный доступ ко всем базам. Для безопасности ограничьте права, напримерGRANT SELECT, INSERT ON база_данных.* TO ...;WITH GRANT OPTIONпозволяет пользователю передавать права другим.
⚠️ Внимание: Использование root для удалённого доступа не рекомендуется из-за риска безопасности. Создайте отдельного пользователя с ограниченными правами.
Проверка текущих подключений к порту 3306
Перед открытием порта убедитесь, что он не занят другим процессом. Для этого используйте командную строку:
Если порт занят не MySQL, а другим процессом, завершите его через taskkill /PID 1234 /F (где 1234 — процесса) или перезапустите MySQL.
Открытие порта 3306 в брандмауэре Windows 10
Теперь переходим к основному шагу — открытию порта в брандмауэре. Есть два способа: через графический интерфейс и командную строку. Рассмотрим оба.
Способ 1: Через Панель управления
Откройте
Панель управления → Система и безопасность → Брандмауэр Windows.В левом меню выберите
Дополнительные параметры.В окне
Брандмауэр в режиме повышенной безопасностивыберитеПравила для входящих подключений→Создать правило....Выберите тип правила:
Для порта→Далее.Укажите
TCPи введите номер порта:3306→Далее.Выберите
Разрешить подключение→Далее.Укажите профили, для которых пременяется правило (обычно
Доменный, Частный, Общий) →Далее.Задайте имя правила, например
MySQL Port 3306, и нажмитеГотово.
Способ 2: Через командную строку
Откройте командную строку от имени администратора и выполните:
netsh advfirewall firewall add rule name="MySQL Port 3306" dir=in action=allow protocol=TCP localport=3306
Чтобы проверить, что правило создано:
netsh advfirewall firewall show rule name="MySQL Port 3306"
Если нужно удалить правило:
netsh advfirewall firewall delete rule name="MySQL Port 3306"
Как проверить, открыт ли порт извне
Для проверки извне используйте сервис canyouseeme.org или команду из другой сети: telnet ваш_IP 3306. Если подключение устанавливается — порт открыт. Если нет, проверьте настройки роутера (проброс портов) и провайдера.
Настройка роутера для удалённого доступа
Если вы хотите подключаться к MySQL из интернета (не из локальной сети), нужно настроить проброс портов на роутере. Это актуально для работы с сервером извне.
| Производитель роутера | Путь к настройкам проброса портов | Пример модели |
|---|---|---|
| TP-Link | Advanced → NAT Forwarding → Port Forwarding | TL-WR840N |
| ASUS | Internet → Port Forwarding | RT-AX88U |
| MikroTik | IP → Firewall → NAT | RB4011 |
| Keenetic | Home Network → Port Forwarding | Keenetic Giga |
Общие шаги для проброса портов:
Найдите локальный IP-адрес компьютера с MySQL (через
ipconfigв командной строке).В панели управления роутером добавьте правило проброса:
- Внешний порт: 3306;
- Внутренний IP: IP вашего компьютера (например,
192.168.1.100); - Внутренний порт: 3306;
- Протокол: TCP (иногда нужно указать и TCP, и UDP);
Сохраните настройки и перезагрузите роутер.
Важно: Убедитесь, что ваш провайдер не блокирует порт 3306. Некоторые операторы (например, Билайн или Ростелеком) закрывают нестандартные порты для домашних пользователей. В этом случае используйте или облачный сервер.
Проверка работоспособности
После всех настроек проверьте подключение к MySQL извне:
Узнайте свой внешний IP-адрес (через
whatismyip.comили аналогичный сервис).С другого компьютера (или через мобильный интернет) попробуйте подключиться:
mysql -h ваш_внешний_IP -u remote_user -pЕсли подключение проходит — всё настроено правильно.
Если подключение не работает:
- Проверьте, что MySQL запущен и слушает порт 3306 (
netstat -ano | findstr 3306); - Убедитесь, что правило в брандмауэре активно;
- Проверьте настройки роутера (проброс портов);
- Попробуйте отключить антивирус временно.
Открытие порта 3306 — это только половина дела. Без настройки MySQL на приём удалённых подключений и создания пользователя с соответствующими правами доступ не заработает.
Пошаговая инструкция: Открываем порт 3306 для на Windows 10
Чтобы не упустить ни один шаг, следуйте этому чек-листу:
Чек-лист по открытию порта 3306
Часто задаваемые вопросы
Можно ли использовать порт 3306 для и одновременно?
Нет, на одном компьютере не может быть двух служб, слушающих один и тот же порт. Если вы устанавливаете и MySQL, и MariaDB, измените порт для одной из них в конфигурационном файле (например, на 3307) и настройте соответствующее правило в брандмауэре.
Почему после открытия порта подключение всё равно не работает?
Скорее всего, проблема в настройках MySQL. Проверьте, что в файле my.ini стоит bind-address = 0.0.0.0 и что пользователь имеет права на подключение с удалённого IP. Также убедитесь, что порт не блокируется антивирусом или роутером.
Как закрыть порт 3306, если он больше не нужен?
Удалите правило в брандмауэре через Панель управления → Брандмауэр Windows → Дополнительные параметры → Правила для входящих подключений. Найдите правило MySQL Port 3306 и удалите его. Также можно сделать это через команду: netsh advfirewall firewall delete rule name="MySQL Port 3306".
Безопасно ли открывать порт 3306 для всех IP?
Нет, это небезопасно. Открытие порта для всех IP (% в настройках пользователя) увеличивает риск атак. Ограничьте доступ конкретными IP-адресами (например, '192.168.1.100'), используйте сложные пароли и настройте SSL-шифрование для подключений.