---
title: 'vklyuchaem-udalyonnyj-dostup-k-mysqlmariadb-na-servere-ubuntu-hestiacp | Zomro'
description: ''
image: 'https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/a48%40server-panel.net/2025/06/04/dalle-2025-06-04-092611-a-modern-and-sleek-16_9-digital-illustration-showing-the-concept-of-remote-access-to-mysql_mariadb-databases-on-an-ubuntu-server-with-hestiacp-control_q50.jpg'
---

![opened image]()

  * [Zomro](https://zomro.com/rus/)
  * [FAQ](https://zomro.com/rus/blog/faq/)
  * Включаем удалённый доступ к MySQL/MariaDB на сервере Ubuntu + HestiaCP 



# Включаем удалённый доступ к MySQL/MariaDB на сервере Ubuntu + HestiaCP

03-06-2025

![](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/a48%40server-panel.net/2025/06/04/dalle-2025-06-04-092611-a-modern-and-sleek-16_9-digital-illustration-showing-the-concept-of-remote-access-to-mysql_mariadb-databases-on-an-ubuntu-server-with-hestiacp-control_q50.jpg)

**Введение**

По умолчанию MySQL/MariaDB на Ubuntu, установленный через HestiaCP, слушает **только localhost** (127.0.0.1). Такой режим безопасен, но мешает подключаться с других хостов — например, когда веб‑приложение находится на отдельном инстансе или разработчик должен работать с базы напрямую. Ниже пошагово показываем, как открыть порт 3306, создать ограниченного пользователя и не потерять безопасность сервера.

**Что будем делать:**

  1. Разрешим MySQL слушать внешние IP.

  2. Создадим юзера, привязанного к конкретному адресу/подсети.

  3. Пропишем правило в UFW (или iptables) через HestiaCP.

  4. Проверим соединение и дадим чек‑лист hardening.




Разрешаем MySQL слушать внешний интерфейс
    
    
    vim /etc/mysql/mariadb.conf.d/50-server.cnf

![](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/a48%40server-panel.net/2025/06/03/02_q50.jpg)

Найдите директиву:
    
    
    bind-address = 127.0.0.1

Варианты:

  * Заменить на конкретный внешний IP сервера — **безопаснее**.

  * Установить `0.0.0.0` или закомментировать строку — слушаем все интерфейсы.




![](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/a48%40server-panel.net/2025/06/03/01_q50.jpg)

![](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/a48%40server-panel.net/2025/06/03/03_q50.jpg)

Сохраняем, перезапускаем службу:
    
    
    sudo systemctl restart mariadb

Проверяем:
    
    
    ss -tunlp | grep 3306

![](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/a48%40server-panel.net/2025/06/03/04_q50.jpg)

Должно показывать LISTEN на нужном IP.

**Создаём ограниченного пользователя**

> Не используйте `%` без необходимости — задавайте конкретный IP или CIDR!
    
    
    sudo mysql -u root -p
    
    -- for one IP
    CREATE USER 'remote_app'@'203.0.113.42' IDENTIFIED BY 'Str0ngP@ss!';
    GRANT ALL PRIVILEGES ON mydb.* TO 'remote_app'@'203.0.113.42';
    
    -- for /24
    CREATE USER 'netdev'@'192.168.10.%' IDENTIFIED BY 'NetPass2025!';
    GRANT SELECT,INSERT,UPDATE,DELETE ON analytics.* TO 'netdev'@'192.168.10.%';
    FLUSH PRIVILEGES;
    EXIT;

**Открываем порт 3306 в фаерволе**

**UFW (стандарт HestiaCP)**
    
    
    sudo ufw allow from 203.0.113.42 to any port 3306 proto tcp  # only one IP
    sudo ufw reload

Для подсети:
    
    
    sudo ufw allow from 192.168.10.0/24 to any port 3306 proto tcp

iptables
    
    
    iptables -A INPUT -p tcp -s 203.0.113.42 --dport 3306 -j ACCEPT

Открываем доступ только с данного IP `203.0.113.42`

Если нужно открыть доступ всем IP (**не безопасно**):
    
    
    iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

Сохраним правила: `sudo netfilter-persistent save`.

**Интеграция с интерфейсом HestiaCP (опционально)**

Чтобы управлять БД через панель, добавьте новый хост:
    
    
    v-add-database-host mysql remote remote_app Str0ngP@ss! 203.0.113.42

После этого в веб‑GUI появится внешний сервер **remote**.

**Проверка соединения**

На рабочей станции:
    
    
    mysql -h 203.0.113.5 -uremote_app -pStr0ngP@ss!

Если всё настроено верно, получите промпт MySQL.

![](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/a48%40server-panel.net/2025/06/03/06_q50.jpg)

Если порт был открыт для всех IP, то можно проверить из внешних онлайн тестеров:

  
  
![](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/a48%40server-panel.net/2025/06/03/05_q50.jpg)

**Чек‑лист безопасности**

MySQL слушает конкретный IP, а не `0.0.0.0` |  ☐  
---|---  
Пользователь ограничен по IP/подсети |  ☐  
Включён SSL между клиентом и сервером (`require_secure_transport = ON`) |  ☐  
Порт 3306 открыт выборочно, а не всему интернету |  ☐  
Пароль сложный, длина ≥ 12 символов |  ☐  
root‑логин по сети запрещён |  ☐  
Включён `skip-name-resolve` (ускоряет auth, уменьшает brute) |  ☐  
  
**Шифрование и аудит удалённых соединений**

**Включаем TLS**

  
Ubuntu‑пакет MariaDB уже содержит self‑signed сертификаты `/etc/mysql/ssl/`. Активируйте шифрование в конфиге:
    
    
    [mysqld]
    require_secure_transport = ON
    ssl-ca   = /etc/mysql/ssl/ca.pem
    ssl-cert = /etc/mysql/ssl/server-cert.pem
    ssl-key  = /etc/mysql/ssl/server-key.pem

Перезапустите службу и проверьте:
    
    
    mysql -h 203.0.113.5 --ssl-mode=REQUIRED -u remote_app -p -e "\s" | grep SSL

Для кастомных сертификатов используйте `openssl` или `cfssl` и выпускайте ключи на 4096 бит.

**Ограничиваем ресурсы пользователя**
    
    
    ALTER USER 'remote_app'@'203.0.113.42' WITH 
      MAX_USER_CONNECTIONS 5 
      MAX_QUERIES_PER_HOUR 1000 
      MAX_UPDATES_PER_HOUR 200;

Так единичный утечённый пароль не выведет сервер из строя.

**Включаем аудит**

  
Простой вариант — general log только для удалённых IP:
    
    
    [mysqld]
    general_log = ON
    general_log_file = /var/log/mysql/remote.log
    log_output = FILE

Логи можно анализировать fail2ban‑фильтром, блокируя IP после 10 неудачных попыток.

**Авто‑ротация журналов**

  
Добавьте правило в `/etc/logrotate.d/mysql-remote` с хранением 14 дней для предотвращения переполнения диска.

**Заключение**

Открыть MySQL наружу — задача двух команд, но безопасно открыть — целый чек‑лист. Настройка `bind-address`, IP‑фильтрация на уровне UFW/iptables и минимальные привилегии пользователя защищают базу от сканеров и брутфорса. Проверяйте логи `/var/log/mysql/error.log`, используйте `mysqltuner`, обновляйте пароли — и ваш удалённый доступ будет таким же надёжным, как локальный.

> Лучшее правило: «Разрешай столько, сколько нужно, и не на минуту дольше». По окончании тестов закрывайте порт — это займет меньше времени, чем восстановление после взлома

Похожие статьи

[VestaCP: Как отключить или изменить количество резервных копий (бэкапов)](https://zomro.com/rus/blog/faq/71-vestacp-kak-otklyuchit-ili-izmenit-kolichestvo-rezervnyh-kopiy-bekapov) [Как установить Node.js на Windows Server 2012, 2016, 2019](https://zomro.com/rus/blog/faq/312-kak-ustanovit-nodejs-na-windows-server-2012-2016-2019) [VestaCP: Как изменить время и периодичность создания резервных копий (бэкапов)](https://zomro.com/rus/blog/faq/72-vestacp-kak-izmenit-vremya-i-periodichnost-sozdaniya-rezervnyh-kopiy-bekapov) [Практические примеры использования команды find в Linux - Часть 2](https://zomro.com/rus/blog/faq/570-practical-examples-of-using-the-find-command-in-linux-part-2) [Подключение к серверу по SSH](https://zomro.com/rus/blog/faq/142-podkljuchenie-k-serveru-po-ssh)

[ Сервер для Forex от €7.95/мес ](/rus/server-for-forex)
