Настройка безопасного сервера баз данных в Ubuntu — это важнейшая основа для создания масштабируемых и надёжных приложений. Развёртываете ли вы динамические веб-приложения или управляете сложными корпоративными нагрузками, выбор правильного решения для баз данных имеет решающее значение. MySQL и MariaDB — две самые популярные системы баз данных с открытым исходным кодом, известные своей производительностью, гибкостью и надёжностью.
В этом руководстве мы пошагово проведём вас через процесс установки, настройки и защиты MySQL и MariaDB на сервере Ubuntu. Кроме того, мы сравним их возможности, чтобы помочь вам определить лучший вариант для вашего конкретного сценария использования. Следуя этому пошаговому подходу, вы сможете настроить безопасную и надёжную среду баз данных для своих приложений.
Предыдущие статьи:
01. Введение в Ubuntu Server – SysOSX: AI & Cloud
02. Как настроить свой первый сервер Ubuntu: руководство для начинающих – SysOSX: AI & Cloud
03. Освоение командной строки Linux для Ubuntu Server – SysOSX: AI & Cloud
05. Основы сетей для Ubuntu Server: полное руководство – SysOSX: AI & Cloud
07.Исправления и обновления Ubuntu Server: полное руководство – SysOSX: AI & Cloud
08. Защита вашего сервера Ubuntu: практические шаги по усилению защиты – SysOSX: AI & Cloud
09. Аудит и ведение журналов сервера Ubuntu
10. Инструменты мониторинга системы для Ubuntu Server: полное руководство – 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 имеют общие корни, за последние годы они разошлись и предлагают разные возможности. Это сравнение поможет вам выбрать сервер баз данных, подходящий для ваших задач:
| Возможность | MySQL | MariaDB |
|---|---|---|
| Лицензия | Двойная лицензия (GPL и проприетарная) | Открытый исходный код (GPL) |
| Производительность | Оптимизирована для нагрузок с преобладанием чтения | Улучшенная производительность как для нагрузок чтения, так и для нагрузок записи |
| Подсистема хранения по умолчанию | InnoDB | Aria (альтернатива 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)
- Создайте сертификаты:
sudo mysql_ssl_rsa_setup --uid=mysql
- Включите в конфигурации:
[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: гибкое хранилище для серверов баз данных», вы узнаете, как:
- Создавать логические тома и управлять ими для динамического хранения баз данных.
- Изменять размер дисков без простоев.
- Реализовать моментальные снимки для согласованного резервного копирования.
Не пропустите — следите за нашим блогом, чтобы быть в курсе!