Короткий ответ: причина — не в MySQL-клиенте, а в сетевом уровне между этой конкретной машиной и сервером. Ошибка 2002 с кодом (115) обычно означает, что TCP‑connect не завершился (EINPROGRESS / таймаут или блокировка). Чаще всего это либо неправильный маршрут / блокировка на стороне клиента/сетевого оборудования, либо попытка подключиться по адресу/семейству (IPv6) куда сервер не слушает.
Что проверить и как отладить (шаги в порядке приоритетности)
1) Проверить, как клиент разрешает имя (IPv4 vs IPv6)
- getent hosts your-mysql-host
- dig +short A your-mysql-host; dig +short AAAA your-mysql-host
Если есть AAAA, клиент может пытаться по IPv6 и это не работает. Попробуйте:
- telnet -4 your-mysql-host 3306 (форсировать IPv4)
- nc -4 -v your-mysql-host 3306
Если по IPv4 работает — причина в IPv6.
2) Проверить, доходит ли SYN до сервера
На сервере (или его стене) запустите tcpdump и попробуйте соединиться с проблемного клиента:
- sudo tcpdump -nni any port 3306 and host <IP_клиента> or host <IP_сервера>
Если SYN от клиента не появляется — проблема в маршрутизации/блокировке до сервера (на клиенте, в маршрутизаторе, у провайдера). Если SYN приходит, но нет ответа — сервер отклоняет/фильтрует.
3) Проверить локальную сторону — клиент
- ping, traceroute: ping <server>, traceroute -T -p 3306 <server>
- ip route show
- ss -tan | grep ESTAB / grep 3306
- sudo tcpdump -nni any host <server> and port 3306 — смотрите идут ли SYN и приходят ли ответы
- iptables -L -v -n (или nft list ruleset), убедитесь, что OUTPUT не блокирует соединения
Иногда VPN/клиентский firewall/SELinux/сетевой неймспейс блокируют исходящие соединения.
4) Проверить серверную фильтрацию по IP/службам
- iptables/nftables на сервере, fail2ban, tcpwrappers (hosts.deny)
В логах сервера (iptables, auth, mysql) может быть запись о блокировке. Если сервер отвечает только на соединения от разрешённых IP — ваш клиент может быть в чёрном списке.
5) Дополнительные вещи
- Попробуйте подключиться по явному IPv4 адресу: mysql -h 1.2.3.4 -P3306 --protocol=TCP
- Проверьте /etc/hosts — может стоять неправильная запись для имени сервера.
- Проверьте MTU/PMTU проблемы (иногда ругается на нестандартные пути), но для SYN обычно не характерно.
- Если клиент в контейнере/виртуалке — проверьте сетевой режим (NAT, bridge).
Типичные реальные причины
- DNS/AAAA → клиент пытается по IPv6, сервер не слушает IPv6.
- Сервер блокирует конкретный IP (iptables, fail2ban, tcpwrappers).
- Маршрутизация/шлюз на клиенте неверна — пакеты не доходят.
- Локальный firewall на клиенте (OUTPUT) или корпоративный прокси/ACL блокирует исходящие TCP.
- VPN/сетевой namespace мешает соединению.
Если пришлёте выводы нескольких команд (getent hosts, ping, traceroute, tcpdump/описание того, видно ли SYN на сервере), помогу точно локализовать проблему и дам конкретное решение.