Установить и защитить MariaDB
Это руководство объясняет, как установить и безопасно настроить MariaDB на вашем VPS.
Предварительные требования
- Доступ SSH root или sudo
- Обновленная система Debian/Ubuntu
Установка
-
Установите MariaDB:
sudo apt updatesudo apt install mariadb-server -
Защитите установку:
sudo mysql_secure_installationСледуйте шагам безопасности:
- Нажмите Enter для пароля root (пустой по умолчанию)
- Ответьте на вопросы безопасности:
- Изменить пароль root? [Y/n] :
Y(рекомендует ся) - Удалить анонимных пользователей? [Y/n] :
Y - Запретить удаленный вход root? [Y/n] :
Y - Удалить тестовую базу данных? [Y/n] :
Y - Перезагрузить таблицы привилегий? [Y/n] :
Y
- Изменить пароль root? [Y/n] :
Конфигурация пользователя
-
Подключитесь к MariaDB:
sudo mysql -
Создайте нового пользователя-администратора (замените '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;
Проверка установки
-
Проверьте соединение с новым пользователем:
mysql -u your_user -p -
Проверьте статус службы:
sudo systemctl status mariadb
Защита порта MariaDB
-
Проверьте текущий порт прослушивания:
sudo netstat -tlnp | grep mysql -
Настройте брандмауэр (UFW):
# Заблокировать доступ по умолчанию к порту MySQL (3306)sudo ufw deny 3306# Если вам нужно разрешить удаленный доступ с конкретного IPsudo ufw allow from AUTHORIZED_IP to any port 3306 -
Измените файл конфигурации MariaDB:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnfНайдите и измените эти строки:
# Ограничить прослушивание только localhostbind-address = 127.0.0.1# Или укажите конкретный IP-адрес# bind-address = YOUR_SERVER_IP -
Перезапустите MariaDB для применения изменений:
sudo systemctl restart mariadb -
Проверьте авторизованные соединения:
mysql -u root -pSELECT user, host FROM mysql.user;
Графическое администрирование базы данных
По сле установки MariaDB два графических инструмента позволяют управлять базами данных без командной строки:
- phpMyAdmin: веб-интерфейс, установленный непосредственно на сервере (с Apache и PHP). Доступен из браузера, удобен для повседневного администрирования.
- MySQL Workbench: настольное приложение, установленное на вашем компьютере. Оно подключается к серверу через SSH-туннель, без открытия порта 3306 — в соответствии с защитой, описанной выше.
phpMyAdmin (веб-интерфейс через архив .tar.gz / .zip)
Этот метод устанавливает phpMyAdmin из официального архива (часто более свежего, чем пакет apt), обслуживаемого Apache.
-
Установите Apache, PHP и необходимые расширения:
sudo apt updatesudo apt install apache2 php libapache2-mod-php php-mysqli php-mbstring php-zip php-gd php-curl php-xml -
Скачайте и распакуйте официальный архив. На момент написания последняя стабильная версия — phpMyAdmin 5.2.3.
Вариант A — архив .tar.gz:
cd /tmpwget https://files.phpmyadmin.net/phpMyAdmin/5.2.3/phpMyAdmin-5.2.3-all-languages.tar.gztar xzf phpMyAdmin-5.2.3-all-languages.tar.gzsudo mv phpMyAdmin-5.2.3-all-languages /usr/share/phpmyadminВариант B — архив .zip:
cd /tmpsudo apt install unzipwget https://files.phpmyadmin.net/phpMyAdmin/5.2.3/phpMyAdmin-5.2.3-all-languages.zipunzip phpMyAdmin-5.2.3-all-languages.zipsudo mv phpMyAdmin-5.2.3-all-languages /usr/share/phpmyadminПроверьте последнюю версиюСмотрите официальную страницу загрузки, чтобы получить самую свежую версию, и скорректируйте номер в командах.
-
Создайте временный каталог и настройте права:
sudo mkdir -p /usr/share/phpmyadmin/tmpsudo chown -R www-data:www-data /usr/share/phpmyadminsudo chmod 755 /usr/share/phpmyadmin/tmp -
Создайте файл конфигурации из предоставленного образца:
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'; -
Объявите phpMyAdmin в Apache:
sudo nano /etc/apache2/conf-available/phpmyadmin.confДобавьте следующее содержимое:
Alias /phpmyadmin /usr/share/phpmyadmin<Directory /usr/share/phpmyadmin>Options SymLinksIfOwnerMatchDirectoryIndex index.phpRequire all granted</Directory># Запретить веб-доступ к чувствительным каталогам<Directory /usr/share/phpmyadmin/tmp>Require all denied</Directory> -
Включите конфигурацию и перезагрузите Apache:
sudo a2enconf phpmyadminsudo systemctl reload apache2 -
Откройте интерфейс в браузере, затем войдите с пользователем MariaDB, созданным ранее:
http://ip_или_домен_сервера/phpmyadmin
phpMyAdmin — частая цель автоматизированных атак. Настоятельно рекомендуется:
- включить HTTPS (см. совет ниже);
- ограничить доступ по IP или добавить аутентификацию Apache (
.htaccess); - при необходимости заменить псевдоним
/phpmyadminна менее предсказуемый путь.
В производственной среде защитите доступ сертификатом 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, как если бы вы были локально на сервере.
-
Скачайте и установите MySQL Workbench с официального сайта на ваш компьютер.
-
В Workbench создайте новое соединение (Database ▸ Manage Connections ▸ New) методом Standard TCP/IP over SSH и заполните:
Поле Значение SSH Hostname ip_адрес_сервера:22(или ваш порт SSH)SSH Username ваш пользователь SSH SSH Key File / Password ваш ключ SSH или пароль MySQL Hostname 127.0.0.1MySQL Server Port 3306Username пользователь MariaDB (напр. your_user)Password пароль этого пользователя Почему 127.0.0.1?Поля MySQL Hostname/Port вычисляются со стороны сервера, на другом конце SSH-туннеля. Поэтому указывается
127.0.0.1:3306, то есть MariaDB, слушающая локально на сервере. -
Нажмите Test Connection для проверки, затем OK, чтобы сохранить соединение.
Вы также можете открыть туннель вручную, затем направить любой клиент MySQL на 127.0.0.1:3307 локально:
ssh -L 3307:127.0.0.1:3306 пользователь@ip_адрес_сервера
Пока сессия SSH открыта, локальный порт 3307 связан с портом 3306 сервера.
MySQL Workbench разработан для MySQL. С последними версиями MariaDB может появиться предупреждение о «неподдерживаемой версии»: большинство обычных операций (просмотр данных, выполнение SQL, управление пользователями) тем не менее работают.
Лучшие практики безопаснос ти
- Используйте надежные пароли
- Ограничьте доступ к базе данных
- Выполняйте регулярные резервные копии
- Регулярно обновляйте MariaDB
- Ограничьте соединения доверенными IP
- Регулярно отслеживайте попытки соединения
Устранение неполадок
- Проверьте логи:
sudo tail -f /var/log/mysql/error.log - Убедитесь, что служба активна:
sudo systemctl status mariadb - Убедитесь, что порты открыты:
sudo netstat -tulpn | grep mysql