Skip to main content

Установить и защитить MariaDB

Это руководство объясняет, как установить и безопасно настроить MariaDB на вашем VPS.

Предварительные требования

  • Доступ SSH root или sudo
  • Обновленная система Debian/Ubuntu

Установка

  1. Установите MariaDB:

    sudo apt update
    sudo apt install mariadb-server
  2. Защитите установку:

    sudo mysql_secure_installation

    Следуйте шагам безопасности:

    • Нажмите Enter для пароля root (пустой по умолчанию)
    • Ответьте на вопросы безопасности:
      • Изменить пароль root? [Y/n] : Y (рекомендуется)
      • Удалить анонимных пользователей? [Y/n] : Y
      • Запретить удаленный вход root? [Y/n] : Y
      • Удалить тестовую базу данных? [Y/n] : Y
      • Перезагрузить таблицы привилегий? [Y/n] : Y

Конфигурация пользователя

  1. Подключитесь к MariaDB:

    sudo mysql
  2. Создайте нового пользователя-администратора (замените 'your_user' и 'your_password'):

    CREATE USER 'your_user'@'localhost' IDENTIFIED BY 'your_password';
    GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'localhost' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    EXIT;

Проверка установки

  1. Проверьте соединение с новым пользователем:

    mysql -u your_user -p
  2. Проверьте статус службы:

    sudo systemctl status mariadb

Защита порта MariaDB

  1. Проверьте текущий порт прослушивания:

    sudo netstat -tlnp | grep mysql
  2. Настройте брандмауэр (UFW):

    # Заблокировать доступ по умолчанию к порту MySQL (3306)
    sudo ufw deny 3306

    # Если вам нужно разрешить удаленный доступ с конкретного IP
    sudo ufw allow from AUTHORIZED_IP to any port 3306
  3. Измените файл конфигурации MariaDB:

    sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

    Найдите и измените эти строки:

    # Ограничить прослушивание только localhost
    bind-address = 127.0.0.1

    # Или укажите конкретный IP-адрес
    # bind-address = YOUR_SERVER_IP
  4. Перезапустите MariaDB для применения изменений:

    sudo systemctl restart mariadb
  5. Проверьте авторизованные соединения:

    mysql -u root -p
    SELECT user, host FROM mysql.user;

Графическое администрирование базы данных

После установки MariaDB два графических инструмента позволяют управлять базами данных без командной строки:

  • phpMyAdmin: веб-интерфейс, установленный непосредственно на сервере (с Apache и PHP). Доступен из браузера, удобен для повседневного администрирования.
  • MySQL Workbench: настольное приложение, установленное на вашем компьютере. Оно подключается к серверу через SSH-туннель, без открытия порта 3306 — в соответствии с защитой, описанной выше.

phpMyAdmin (веб-интерфейс через архив .tar.gz / .zip)

Этот метод устанавливает phpMyAdmin из официального архива (часто более свежего, чем пакет apt), обслуживаемого Apache.

  1. Установите Apache, PHP и необходимые расширения:

    sudo apt update
    sudo apt install apache2 php libapache2-mod-php php-mysqli php-mbstring php-zip php-gd php-curl php-xml
  2. Скачайте и распакуйте официальный архив. На момент написания последняя стабильная версия — phpMyAdmin 5.2.3.

    Вариант A — архив .tar.gz:

    cd /tmp
    wget https://files.phpmyadmin.net/phpMyAdmin/5.2.3/phpMyAdmin-5.2.3-all-languages.tar.gz
    tar xzf phpMyAdmin-5.2.3-all-languages.tar.gz
    sudo mv phpMyAdmin-5.2.3-all-languages /usr/share/phpmyadmin

    Вариант B — архив .zip:

    cd /tmp
    sudo apt install unzip
    wget https://files.phpmyadmin.net/phpMyAdmin/5.2.3/phpMyAdmin-5.2.3-all-languages.zip
    unzip phpMyAdmin-5.2.3-all-languages.zip
    sudo mv phpMyAdmin-5.2.3-all-languages /usr/share/phpmyadmin
    Проверьте последнюю версию

    Смотрите официальную страницу загрузки, чтобы получить самую свежую версию, и скорректируйте номер в командах.

  3. Создайте временный каталог и настройте права:

    sudo mkdir -p /usr/share/phpmyadmin/tmp
    sudo chown -R www-data:www-data /usr/share/phpmyadmin
    sudo chmod 755 /usr/share/phpmyadmin/tmp
  4. Создайте файл конфигурации из предоставленного образца:

    sudo cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

    Сгенерируйте секретную строку (32 символа) для шифрования cookie:

    openssl rand -base64 24

    Отредактируйте файл конфигурации:

    sudo nano /usr/share/phpmyadmin/config.inc.php

    Укажите секретную строку и временный каталог:

    $cfg['blowfish_secret'] = 'ВСТАВЬТЕ_СЮДА_СГЕНЕРИРОВАННУЮ_СТРОКУ';
    $cfg['TempDir'] = '/usr/share/phpmyadmin/tmp';
  5. Объявите phpMyAdmin в Apache:

    sudo nano /etc/apache2/conf-available/phpmyadmin.conf

    Добавьте следующее содержимое:

    Alias /phpmyadmin /usr/share/phpmyadmin

    <Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php
    Require all granted
    </Directory>

    # Запретить веб-доступ к чувствительным каталогам
    <Directory /usr/share/phpmyadmin/tmp>
    Require all denied
    </Directory>
  6. Включите конфигурацию и перезагрузите Apache:

    sudo a2enconf phpmyadmin
    sudo systemctl reload apache2
  7. Откройте интерфейс в браузере, затем войдите с пользователем MariaDB, созданным ранее:

    http://ip_или_домен_сервера/phpmyadmin
Защитите доступ к phpMyAdmin

phpMyAdmin — частая цель автоматизированных атак. Настоятельно рекомендуется:

  • включить HTTPS (см. совет ниже);
  • ограничить доступ по IP или добавить аутентификацию Apache (.htaccess);
  • при необходимости заменить псевдоним /phpmyadmin на менее предсказуемый путь.
Включить HTTPS

В производственной среде защитите доступ сертификатом SSL Let's Encrypt:

sudo apt install -y certbot python3-certbot-apache
sudo certbot --apache -d ваш-домен.ru

Сертификат требует доменного имени, указывающего на IP вашего сервера — см. наше руководство по созданию записи A.

MySQL Workbench (настольный клиент через SSH-туннель)

MySQL Workbench устанавливается на ваш компьютер (Windows, macOS или Linux) и подключается к серверу через SSH-туннель. Порт 3306 остаётся закрытым на сервере, и MariaDB продолжает слушать только на 127.0.0.1: соединение проходит через SSH, как если бы вы были локально на сервере.

  1. Скачайте и установите MySQL Workbench с официального сайта на ваш компьютер.

  2. В Workbench создайте новое соединение (Database ▸ Manage Connections ▸ New) методом Standard TCP/IP over SSH и заполните:

    ПолеЗначение
    SSH Hostnameip_адрес_сервера:22 (или ваш порт SSH)
    SSH Usernameваш пользователь SSH
    SSH Key File / Passwordваш ключ SSH или пароль
    MySQL Hostname127.0.0.1
    MySQL Server Port3306
    Usernameпользователь MariaDB (напр. your_user)
    Passwordпароль этого пользователя
    Почему 127.0.0.1?

    Поля MySQL Hostname/Port вычисляются со стороны сервера, на другом конце SSH-туннеля. Поэтому указывается 127.0.0.1:3306, то есть MariaDB, слушающая локально на сервере.

  3. Нажмите Test Connection для проверки, затем OK, чтобы сохранить соединение.

Альтернатива — ручной SSH-туннель

Вы также можете открыть туннель вручную, затем направить любой клиент MySQL на 127.0.0.1:3307 локально:

ssh -L 3307:127.0.0.1:3306 пользователь@ip_адрес_сервера

Пока сессия SSH открыта, локальный порт 3307 связан с портом 3306 сервера.

Совместимость с MariaDB

MySQL Workbench разработан для MySQL. С последними версиями MariaDB может появиться предупреждение о «неподдерживаемой версии»: большинство обычных операций (просмотр данных, выполнение SQL, управление пользователями) тем не менее работают.

Лучшие практики безопасности

  • Используйте надежные пароли
  • Ограничьте доступ к базе данных
  • Выполняйте регулярные резервные копии
  • Регулярно обновляйте MariaDB
  • Ограничьте соединения доверенными IP
  • Регулярно отслеживайте попытки соединения

Устранение неполадок

  • Проверьте логи: sudo tail -f /var/log/mysql/error.log
  • Убедитесь, что служба активна: sudo systemctl status mariadb
  • Убедитесь, что порты открыты: sudo netstat -tulpn | grep mysql