Настройка MySQL на Ubuntu 18.04

MySQL — это open‑source реляционная система управления базами данных (RDBMS). Данные в ней организуются в таблицы; для работы с ними используется Structured Query Language (SQL). Когда требуется хранить и управлять большими объёмами структурированных данных, чаще всего выбирают RDBMS и SQL.
В этой инструкции подробно объясняется, как установить и настроить MySQL на сервере Ubuntu 18.04, включить базовую аутентификацию, управлять службой через systemctl и протестировать работоспособность. Материал рассчитан на системных администраторов и разработчиков, которые настраивают MySQL вручную.
Перед началом
Краткие требования и рекомендации перед установкой:
- У вас должен быть доступ к серверу Ubuntu 18.04 с правами sudo.
- Желательно иметь резервную копию важных данных перед изменениями в продуктивной системе.
- Проверьте свободное место на диске и доступный объём ОЗУ — для небольших тестовых инстансов хватает 1–2 ГБ ОЗУ и нескольких гигабайт диска.
- Доступ по SSH и открытый порт 22 (для администрирования). Для удалённой работы с базой потребуется доступ к порту 3306, но по умолчанию его стоит закрыть в брандмауэре и открывать только для доверенных адресов.
Определения в одну строку:
- RDBMS — система управления реляционными базами данных, где данные хранятся в таблицах.
- auth_socket — плагин аутентификации MySQL, позволяющий клиентам подключаться по сокету UNIX без пароля, основываясь на учётной записи ОС.
- mysql_native_password — классическая схема аутентификации MySQL по паролю.
Установка MySQL Client
Установите клиент, чтобы иметь возможность подключаться к удалённому серверу:
sudo apt install mysql-client -yПроверьте версию клиента:
mysql -VПример вывода (на вашем сервере он может отличаться):
mysql Ver 8.0.28-0ubuntu0.20.04.3 for Linux on x86_64 ((Ubuntu))Подключение к удалённому серверу (рекомендуемый синтаксис):
mysql -u -p -h HOSTNAME_OR_IP Примечание: не передавайте пароль непосредственно в командной строке в явном виде — используйте опцию -p без значения, тогда утилита запросит пароль интерактивно.
Установка MySQL Server
Перед установкой обновите списки пакетов:
sudo apt updateТеперь установите сервер:
sudo apt install mysql-server -yНа Ubuntu 18.04 в репозиториях по умолчанию чаще встречается ветка MySQL 5.7, но можно установить более современные сборки из официальных репозиториев MySQL при необходимости.
Первичная безопасная настройка
После установки выполните рекомендованный скрипт безопасности, который отключит небезопасные опции по умолчанию, удалит тестовые учётные записи и позволит установить пароль root:
sudo mysql_secure_installationЧто делает скрипт в общих чертах:
- предлагает включить Validate Password плагин (проверка сложности паролей);
- предлагает установить (или изменить) пароль для root;
- предлагает удалить анонимных пользователей;
- предлагает запретить удалённые входы под root;
- предлагает удалить тестовые базы данных;
- предлагает перезагрузить таблицы привилегий.
Советы при выполнении:
- Включите проверку паролей для производственных систем.
- Отвечайте Y (Yes) на удаление анонимных пользователей и тестовых баз, если это не тестовый стенд.

После задания пароля скрипт покажет уровень сложности пароля и предложит продолжить.

Далее вас попросят подтвердить следующие действия:
- Удаление анонимного тестового пользователя;
- Запрет удалённого входа под root;
- Удаление тестовых баз данных;
- Перезагрузку таблиц привилегий.
Рекомендуется придерживаться значений по умолчанию (Y) для этих пунктов в боевой среде.

Примечание по инициализации каталога данных:
- В более старых версиях MySQL (до 5.7.6) может требоваться ручная инициализация каталога данных.
- Для актуальных сборок инициализация обычно происходит автоматически при установке. Если нужно вручную инициализировать, используйте:
mysqld --initializeКорректировка схемы аутентификации пользователей
По умолчанию некоторые дистрибутивы (особенно на серверах Ubuntu) настраивают root на аутентификацию через auth_socket. Это удобно для локального администрирования, но неудобно для удалённых подключений и автоматизированных инструментов.
Подходы:
Root через пароль
- Откройте MySQL-пrompt под root:
sudo mysql- Посмотрите текущую таблицу пользователей и плагины аутентификации:
SELECT user, authentication_string, plugin, host FROM mysql.user;
- Если root использует auth_socket и вы хотите сменить на парольную аутентификацию, выполните:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_strong_password';
FLUSH PRIVILEGES;- Проверьте снова таблицу mysql.user, чтобы убедиться, что плагин изменён:
SELECT user, authentication_string, plugin, host FROM mysql.user;
- После этого root сможет подключаться с паролем:
sudo mysql -u root -pВажно: использование root с паролем для удалённых подключений увеличивает риски. Лучше настроить доступ только с localhost или через защищённые каналы (VPN, SSH-туннель).
Создание отдельного административного пользователя
Лучший практический подход — не использовать root для серверных приложений. Создайте отдельного пользователя с необходимыми привилегиями:
sudo mysqlВнутри MySQL:
CREATE USER 'ubuntu'@'localhost' IDENTIFIED BY 'your_strong_password';
GRANT ALL PRIVILEGES ON *.* TO 'ubuntu'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exitТакой пользователь имеет административные права, но имя root остаётся защищённым и может использоваться только для аварийного доступа.
Управление службой и базовые проверки
Включите автозапуск MySQL при старте системы:
sudo systemctl enable mysqlПроверить состояние службы:
sudo systemctl status mysqlsudo systemctl status mysql.service
Если служба не запущена, стартуйте её:
sudo systemctl start mysqlПолезные проверки после установки и настройки:
- Убедиться, что порт 3306 слушается локально: sudo ss -ltnp | grep 3306
- Попытаться подключиться локально: mysql -u ubuntu -p
- Проверить наличие привилегий: SHOW GRANTS FOR ‘ubuntu’@’localhost’;
Безопасность и рекомендации по жёсткой настройке
Рекомендации для производственной среды:
- Отключите удалённый доступ для root и используйте отдельные учётные записи с минимальными привилегиями.
- Включите брандмауэр (ufw) и разрешайте подключения к 3306 только с доверенных IP.
- Подключайтесь через SSL/TLS для шифрования клиент‑сервер трафика.
- Регулярно применяйте обновления безопасности для ОС и MySQL.
- Ограничьте количество привилегий у учётных записей (принцип наименьших привилегий).
- Настройте регулярное резервное копирование (dump, бинарные логи) и проверку восстановления резервных копий.
Риски и смягчения:
- Проблема: открытый порт 3306 в публичной сети. Смягчение: закрыть порт, использовать VPN/SSH‑туннель.
- Проблема: слабые пароли. Смягчение: включить Validate Password, применить политику паролей и менеджер секретов.
Альтернативы и когда этот подход не подходит
Альтернативы MySQL:
- MariaDB — совместимая форк‑СУБД, часто используется как drop‑in замена.
- Percona Server — ориентирован на производительность и расширенное мониторирование.
- Управляемые СУБД в облаке (Amazon RDS, Google Cloud SQL, Azure Database) — подходят, если вы не хотите управлять инфраструктурой вручную.
Когда ручная установка MySQL не подходит:
- Вы хотите полностью управляемое решение с автоматическими бэкапами и патчами — выбирайте managed DB.
- Не хватает времени на эксплуатацию и мониторинг — рассмотрите облачные сервисы.
Практические чек‑листы по ролям
Чек‑лист для системного администратора:
- Обновить систему и установить mysql-server.
- Запустить mysql_secure_installation и выполнить все рекомендуемые шаги.
- Отключить удалённый root, создать отдельного администратора.
- Настроить брандмауэр и мониторинг службы.
Чек‑лист для разработчика:
- Получить доступ к тестовой базе под отдельным пользователем.
- Проверить возможность подключения через библиотеку приложения.
- Убедиться, что конфигурация пула подключений корректна.
Чек‑лист для инженера по безопасности:
- Проверить настройки шифрования (SSL) и политики паролей.
- Провести аудит привилегий и журналов доступа.
- Настроить оповещения о неуспешных попытках входа и изменениях схемы.
Критерии приёмки
Минимальные критерии, по которым можно считать, что установка и базовая настройка успешны:
- Служба mysql запущена и включена в автозапуск: sudo systemctl status mysql — активна (active).
- Можно подключиться локально с учётной записью администратора: mysql -u ubuntu -p.
- Тестовый пользователь имеет ожидаемые привилегии (проверяется SHOW GRANTS).
- Скрипт mysql_secure_installation выполнен и снял небезопасные опции.
Тестовые случаи:
- Попытка подключиться как root локально после смены плагина на mysql_native_password — ожидается запрос пароля и успешное подключение при верном пароле.
- Попытка подключиться к порту 3306 с внешнего IP без разрешения брандмауэра — соединение должно блокироваться.
- Попытка подключения через TLS без допустимого сертификата — соединение должно быть отклонено (если включён SSL).
Быстрая методология внедрения (пошагово)
- Подготовка: обновление пакетов и резервные копии.
- Установка mysql-client и mysql-server.
- Запуск mysql_secure_installation и настройка пароля root.
- Переключение root на mysql_native_password или создание административного пользователя.
- Настройка брандмауэра и ограничение доступа по IP.
- Настройка мониторинга, бэкапов и регулярных обновлений.
Модель зрелости управления MySQL (упрощённо)
- Уровень 1 — тестовый стенд: простой install, открытый доступ, нет бэкапов.
- Уровень 2 — базовая эксплуатация: отключён удалённый root, настроен отдельный админ, есть бэкап.
- Уровень 3 — продуктив: SSL, продвинутое логирование, мониторинг и SLA.
Быстрый справочник команд (cheat sheet)
- Установить сервер: sudo apt install mysql-server -y
- Включить автозапуск: sudo systemctl enable mysql
- Проверить статус: sudo systemctl status mysql
- Запустить безопасный скрипт: sudo mysql_secure_installation
- Подключиться локально: sudo mysql -u root -p или mysql -u ubuntu -p -h localhost
Примеры распространённых ошибок и почему они возникают
- Ошибка подключения после смены плагина аутентификации: возможно, вы сменили плагин, но не выполнили FLUSH PRIVILEGES или попытались подключиться как root удалённо, хотя root ограничен localhost.
- Подключение с клиентской машины не проходит: порт 3306 закрыт брандмауэром или порт слушает только локальный сокет.
- Служба не стартует: проверьте логи /var/log/mysql/error.log и права на каталог данных.
Mermaid диаграмма выбора (вкратце)
flowchart TD
A[Нужна база данных?] -->|Да| B[Создать сервер MySQL на Ubuntu]
B --> C{Доступ из сети нужен?}
C -->|Только локально| D[Оставить auth_socket и ограничить доступ]
C -->|Удалённый доступ| E[Переключить на mysql_native_password и настроить брандмауэр]
E --> F{Облачный managed?}
F -->|Да| G[Рассмотреть RDS/Cloud SQL]
F -->|Нет| H[Управляемый самостоятельно сервер]Заключение
Настройка MySQL на Ubuntu 18.04 включает три главных шага: установка, запуск mysql_secure_installation и корректировка схемы аутентификации. Для боевой эксплуатации дополнительно настройте брандмауэр, SSL и регулярные резервные копии. Если нужен минимальный риск управления, рассмотрите управляемые облачные сервисы или совместимые сборки (MariaDB/Percona).
Краткое резюме и рекомендации:
- Всегда выполняйте mysql_secure_installation после установки.
- Не используйте root в прикладных сценариях — создавайте отдельные учётные записи с ограниченными правами.
- Закрывайте порт 3306 для публичного доступа и используйте VPN/SSH‑туннели или SSL.
Важно: этот материал покрывает базовую настройку и первичные меры безопасности. Для продакшн‑развертываний добавьте мониторинг, резервирование, тестирование восстановления и регулярные обновления.
Похожие материалы
Конвертация MP4 в MP3 — способы и советы
Как настроить сетевой домен — полное руководство
Как добавить рамку к фото — инструменты и методы
Как подключить Fitbit к iPhone — полное руководство
Проверка совместимости игр Steam с Steam Deck