17. Настройка безопасного сервера баз данных в Ubuntu: MySQL и MariaDB

Настройка безопасного сервера баз данных в Ubuntu — это важнейшая основа для создания масштабируемых и надёжных приложений. Развёртываете ли вы динамические веб-приложения или управляете сложными корпоративными нагрузками, выбор правильного решения для баз данных имеет решающее значение. MySQL и MariaDB — две самые популярные системы баз данных с открытым исходным кодом, известные своей производительностью, гибкостью и надёжностью.

В этом руководстве мы пошагово проведём вас через процесс установки, настройки и защиты MySQL и MariaDB на сервере Ubuntu. Кроме того, мы сравним их возможности, чтобы помочь вам определить лучший вариант для вашего конкретного сценария использования. Следуя этому пошаговому подходу, вы сможете настроить безопасную и надёжную среду баз данных для своих приложений.


Предыдущие статьи:

01. Введение в Ubuntu Server – SysOSX: AI & Cloud

02. Как настроить свой первый сервер Ubuntu: руководство для начинающих – SysOSX: AI & Cloud

03. Освоение командной строки Linux для Ubuntu Server – SysOSX: AI & Cloud

04. Управление пользователями и разрешениями в Ubuntu Server: полное руководство – SysOSX: AI & Cloud

05. Основы сетей для Ubuntu Server: полное руководство – SysOSX: AI & Cloud

06. Установка и управление программным обеспечением в Ubuntu Server: полное руководство – SysOSX: AI & Cloud

07.Исправления и обновления Ubuntu Server: полное руководство – SysOSX: AI & Cloud

08. Защита вашего сервера Ubuntu: практические шаги по усилению защиты – SysOSX: AI & Cloud

09. Аудит и ведение журналов сервера Ubuntu

10. Инструменты мониторинга системы для Ubuntu Server: полное руководство – SysOSX: AI & Cloud

11. Централизованное ведение журналов для сервера Ubuntu: обязательное к прочтению руководство – SysOSX: AI & Cloud

12. Аудит и соответствие требованиям для Ubuntu Server: лучшие практики – SysOSX: AI & Cloud

13. Настройка сервера Ubuntu для хостинга и веб-приложений: полное руководство – SysOSX: AI & Cloud

14. Размещение нескольких сайтов на одном сервере Ubuntu: полезные советы – SysOSX: AI & Cloud

15. Управление хранилищем и дисками в Ubuntu Server: простое руководство – SysOSX: AI & Cloud

16. Настройка служб общего доступа к файлам в Ubuntu Server: полное руководство – SysOSX: AI & Cloud



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

Перед началом убедитесь в следующем:

  • Ubuntu Server: работающий экземпляр Ubuntu (рекомендуется версия 20.04 или новее).
  • Административный доступ: вам потребуются привилегии sudo для установки и настройки сервера баз данных.
  • Подключение к интернету: требуется для загрузки пакетов и обновлений.

MySQL и MariaDB: ключевые различия

Хотя MySQL и MariaDB имеют общие корни, за последние годы они разошлись и предлагают разные возможности. Это сравнение поможет вам выбрать сервер баз данных, подходящий для ваших задач:

ВозможностьMySQLMariaDB
ЛицензияДвойная лицензия (GPL и проприетарная)Открытый исходный код (GPL)
ПроизводительностьОптимизирована для нагрузок с преобладанием чтенияУлучшенная производительность как для нагрузок чтения, так и для нагрузок записи
Подсистема хранения по умолчаниюInnoDBAria (альтернатива InnoDB)
ФункцииКорпоративные функции доступны в платных версияхМногие функции (например, пул потоков, функции JSON) имеют открытый исходный код
СовместимостьШироко используется и поддерживается основными платформамиСовместима с MySQL, но может не поддерживать некоторые проприетарные функции MySQL
РепликацияТрадиционная репликацияУлучшенная репликация с поддержкой Galera Cluster
Поддержка сообществаБольшое сообщество и варианты корпоративной поддержкиСильная поддержка сообщества открытого исходного кода

Рекомендация:

  • Выберите MySQL, если вам нужны функции корпоративного уровня и совместимость с проприетарными инструментами.
  • Выберите MariaDB, если вы предпочитаете программное обеспечение с открытым исходным кодом, с расширенными функциями и производительностью.

Установка MySQL или MariaDB

Шаг 1: Обновление репозитория пакетов

Обновите систему, чтобы убедиться, что вы работаете с последними версиями пакетов:

sudo apt update && sudo apt upgrade

Шаг 2: Установка MySQL или MariaDB

Вы можете установить MySQL или MariaDB — в зависимости от ваших предпочтений.

Установка MySQL:

sudo apt install mysql-server

Установка MariaDB:

sudo apt install mariadb-server

Шаг 3: Проверка установки

После установки убедитесь, что сервер баз данных работает:

Для MySQL:

sudo systemctl status mysql

Для MariaDB:

sudo systemctl status mariadb


Настройка сервера баз данных

Шаг 1: Базовая настройка

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

Для MySQL:

sudo nano /etc/mysql/my.cnf

Для MariaDB:

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

Ключевые настройки для изменения:

  • bind-address: установите значение 0.0.0.0, если вам нужен удалённый доступ.
  • max_connections: увеличьте это значение для приложений с высоким трафиком.

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

sudo systemctl restart mysql   # For MySQL
sudo systemctl restart mariadb # For MariaDB

Шаг 2: Проверка сервера баз данных

Войдите на сервер баз данных, чтобы убедиться, что он работает:

mysql -u root -p


Защита вашего сервера баз данных

Шаг 1: Запуск скрипта безопасности

Используйте встроенный скрипт безопасности, чтобы усилить защиту сервера баз данных.

sudo mysql_secure_installation

Следуйте подсказкам, чтобы:

  • Установить надёжный пароль root.
  • Удалить анонимных пользователей.
  • Отключить удалённый вход root.
  • Удалить тестовые базы данных.

Шаг 2: Настройка правил брандмауэра

Ограничьте доступ к серверу баз данных с помощью ufw:

sudo ufw allow from <your-ip-address> to any port 3306

Замените <your-ip-address> на IP-адрес, которому требуется доступ.

Шаг 3: Включение SSL/TLS

Для повышения безопасности включите соединения SSL/TLS. Инструкции по настройке см. в документации MySQL или документации MariaDB.

(Пример для MySQL)

  1. Создайте сертификаты:
sudo mysql_ssl_rsa_setup --uid=mysql  
  1. Включите в конфигурации:
[mysqld]  
ssl-ca = /var/lib/mysql/ca.pem  
ssl-cert = /var/lib/mysql/server-cert.pem  
ssl-key = /var/lib/mysql/server-key.pem  

Шаг 4: Установка Fail2Ban (необязательно)

sudo apt install fail2ban  

Настройте правила jail для MySQL/MariaDB в /etc/fail2ban/jail.local.


Управление вашим сервером баз данных

Шаг 1: Создание базы данных

Создайте базу данных для вашего приложения:

CREATE DATABASE my_application_db;

Шаг 2: Создание пользователя и предоставление привилегий

Создайте пользователя и назначьте привилегии:

CREATE USER 'app_user'@'%' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON my_application_db.* TO 'app_user'@'%';
FLUSH PRIVILEGES;

Шаг 3: Мониторинг производительности

# Analyze slow queries  
sudo mysqldumpslow -s t /var/log/mysql/mysql-slow.log  

# Use MySQLTuner  
wget https://mysqltuner.pl -O mysqltuner.pl  
perl mysqltuner.pl  

Шаг 4: Резервное копирование и восстановление

Регулярное резервное копирование необходимо для безопасности данных.

Резервное копирование:

mysqldump -u root -p my_application_db > my_application_db.sql

Восстановление:

mysql -u root -p my_application_db < my_application_db.sql

Автоматическое резервное копирование (задание cron)

# Daily backup at 2 AM  
0 2 * * * /usr/bin/mysqldump -u root -p PASSWORD app_db > /backups/app_db_$(date +\%F).sql  

Заключение

И MySQL, и MariaDB — отличный выбор для настройки сервера баз данных в Ubuntu. MySQL известен своими функциями корпоративного уровня, а MariaDB выделяется открытым исходным кодом и улучшенной производительностью. Следуя этому руководству, вы сможете эффективно установить, настроить, защитить сервер баз данных и управлять им.

Далее:
В нашем следующем руководстве, «Освоение LVM в Ubuntu: гибкое хранилище для серверов баз данных», вы узнаете, как:

  • Создавать логические тома и управлять ими для динамического хранения баз данных.
  • Изменять размер дисков без простоев.
  • Реализовать моментальные снимки для согласованного резервного копирования.

Не пропустите — следите за нашим блогом, чтобы быть в курсе!

Оставить комментарий