Как открыть порт 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Показывает процессы, использующие порт 3306TCP 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 разрешает подключения по сети. Для этого:

  1. Откройте файл конфигурации 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.

  2. Найдите строку bind-address. По умолчанию она выглядит так:

    bind-address = 127.0.0.1

    Замените её на:

    bind-address = 0.0.0.0

    Это позволит MySQL принимать подключения со всех IP-адресов. Если нужно ограничить доступ, укажите конкретный IP, например bind-address = 192.168.1.100.

  3. Проверьте, что строка skip-networking закомментирована (начинается с #) или отсутствует. Если она активна, MySQL не будет слушать сетевые подключения.

После изменений перезапустите службу MySQL:

net stop MySQL
net start MySQL

Если используете XAMPP, перезапустите Apache и MySQL через панель управления.

Создание пользователя для удалённого доступа

Даже если порт открыт, MySQL не позволит подключиться без пользователя с правами на удалённый доступ. По умолчанию пользователь root может подключаться только с локального хоста (localhost). Чтобы создать пользователя для удалённого доступа:

  1. Подключитесь к MySQL через консоль или MySQL Workbench:

    mysql -u root -p

  2. Создайте пользователя (например, 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: Через Панель управления

  1. Откройте Панель управления → Система и безопасность → Брандмауэр Windows.

  2. В левом меню выберите Дополнительные параметры.

  3. В окне Брандмауэр в режиме повышенной безопасности выберите Правила для входящих подключений → Создать правило....

  4. Выберите тип правила: Для порта → Далее.

  5. Укажите TCP и введите номер порта: 3306 → Далее.

  6. Выберите Разрешить подключение → Далее.

  7. Укажите профили, для которых пременяется правило (обычно Доменный, Частный, Общий) → Далее.

  8. Задайте имя правила, например 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. Если подключение устанавливается — порт открыт. Если нет, проверьте настройки роутера (проброс портов) и провайдера.

Какой способ настройки порта 3306 вы используете чаще
Через Панель управления
Через командную строку
Через PowerShell
Не открывал порт

Настройка роутера для удалённого доступа

Если вы хотите подключаться к MySQL из интернета (не из локальной сети), нужно настроить проброс портов на роутере. Это актуально для работы с сервером извне.

Производитель роутераПуть к настройкам проброса портовПример модели
TP-LinkAdvanced → NAT Forwarding → Port ForwardingTL-WR840N
ASUSInternet → Port ForwardingRT-AX88U
MikroTikIP → Firewall → NATRB4011
KeeneticHome Network → Port ForwardingKeenetic Giga

Общие шаги для проброса портов:

  1. Найдите локальный IP-адрес компьютера с MySQL (через ipconfig в командной строке).

  2. В панели управления роутером добавьте правило проброса:

    • Внешний порт: 3306;
    • Внутренний IP: IP вашего компьютера (например, 192.168.1.100);
    • Внутренний порт: 3306;
    • Протокол: TCP (иногда нужно указать и TCP, и UDP);
  3. Сохраните настройки и перезагрузите роутер.

Важно: Убедитесь, что ваш провайдер не блокирует порт 3306. Некоторые операторы (например, Билайн или Ростелеком) закрывают нестандартные порты для домашних пользователей. В этом случае используйте или облачный сервер.

Проверка работоспособности

После всех настроек проверьте подключение к MySQL извне:

  1. Узнайте свой внешний IP-адрес (через whatismyip.com или аналогичный сервис).

  2. С другого компьютера (или через мобильный интернет) попробуйте подключиться:

    mysql -h ваш_внешний_IP -u remote_user -p

    Если подключение проходит — всё настроено правильно.

Если подключение не работает:

  • Проверьте, что MySQL запущен и слушает порт 3306 (netstat -ano | findstr 3306);
  • Убедитесь, что правило в брандмауэре активно;
  • Проверьте настройки роутера (проброс портов);
  • Попробуйте отключить антивирус временно.

Открытие порта 3306 — это только половина дела. Без настройки MySQL на приём удалённых подключений и создания пользователя с соответствующими правами доступ не заработает.

Пошаговая инструкция: Открываем порт 3306 для на Windows 10

Чтобы не упустить ни один шаг, следуйте этому чек-листу:

Чек-лист по открытию порта 3306

Выполнено: 0 / 5

Часто задаваемые вопросы

Можно ли использовать порт 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-шифрование для подключений.