Гид по технологиям

Установка и настройка MySQL на Ubuntu 18.04

7 min read Базы данных Обновлено 29 Dec 2025
MySQL на Ubuntu 18.04 — установка и настройка
MySQL на Ubuntu 18.04 — установка и настройка

Этот материал шаг за шагом показывает установку MySQL на Ubuntu 18.04, настройку базовой безопасности, управление службой и проверку работоспособности. Включены варианты аутентификации (auth_socket и mysql_native_password), примеры команд, рекомендации по безопасности и чек-листы для ролей.

Слово

Что такое MySQL — в двух словах: MySQL — это популярная реляционная СУБД с поддержкой SQL. Она хранит данные в таблицах и подходит для веб-приложений, аналитики и OLTP-нагрузок.

Важно: команды в примерах выполняются в терминале Ubuntu под пользователем с правами sudo. Сохраняйте пароли в безопасном хранилище.

Шаг 1: Установка клиента MySQL

Цель: иметь возможность подключаться к удалённому серверу MySQL и проверять соединение.

Установите клиент:

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 запросит ввод пароля в интерактивном режиме, что безопаснее, чем указывать пароль в командной строке.

Шаг 2: Установка сервера MySQL

Ubuntu 18.04 по умолчанию содержит в репозиториях MySQL 5.7. Если вам нужна другая версия (например, MySQL 8.0), рассмотрите официальный репозиторий MySQL или контейнеры.

Обновите список пакетов:

sudo apt update

Установите сервер:

sudo apt install mysql-server -y

После установки служба MySQL обычно запускается автоматически. Проверим её состояние (см. раздел «Управление службой»).

Альтернатива: если вы хотите последнюю стабильную версию без привязки к репозиторию Ubuntu, используйте официальный MySQL APT Repository (https://dev.mysql.com/downloads/repo/apt/) или запускайте MySQL в контейнере Docker.

Шаг 3: Базовая конфигурация безопасности

MySQL предоставляет утилиту безопасности, которая помогает убрать небезопасные настройки по умолчанию: удалённые root-логины, анонимные учётные записи, тестовые базы и т. п.

Запустите скрипт:

sudo mysql_secure_installation

Утилита задаст несколько вопросов (Yes/No). Рекомендуемые ответы:

  • Включите плагин проверки паролей (Validate Password) — Yes. Это поможет задать политику сложности.
  • Задайте пароль для root — да (если ещё не задан).
  • Удалите анонимных пользователей — Y.
  • Отключите удалённый вход под root — Y.
  • Удалите тестовые базы — Y.
  • Перезагрузите таблицы привилегий — Y.

Критерии установки пароля — диалог утилиты mysql_secure_installation

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

Окно установки пароля root MySQL

Примечание: в старых версиях MySQL (до 5.7.6) требовалась ручная инициализация каталога данных. Для современных релизов инициализация обычно выполняется автоматически. При необходимости можно запустить инициализацию вручную:

mysqld --initialize

Шаг 4: Аутентификация пользователей и плагины

По умолчанию на некоторых системах root-аутентификация настроена через плагин auth_socket, который позволяет входить в MySQL без пароля, когда вы подключаетесь с локального UNIX‑пользователя root. Это удобно локально, но неудобно для удалённого доступа и автоматизированных сценариев.

Ниже — два распространённых варианта настройки аутентификации.

Вариант A — заставить root использовать пароль (mysql_native_password)

  1. Откройте MySQL от имени администратора:
sudo mysql
  1. Посмотрите, какие плагины используются пользователями:
SELECT user, authentication_string, plugin, host FROM mysql.user;

Тип аутентификации root

  1. Если root использует auth_socket, переключите на mysql_native_password и задайте пароль:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'StrongPasswordHere';
FLUSH PRIVILEGES;
  1. Проверьте изменения:
SELECT user, authentication_string, plugin, host FROM mysql.user;

Изменение типа аутентификации root

  1. Подключение как root затем выглядит так:
mysql -u root -p

Важное замечание: mysql_native_password — это традиционный плагин для паролей. Новые инсталляции MySQL 8 могут использовать caching_sha2_password по умолчанию; он безопаснее и рекомендуется при поддержке клиентами.

Вариант B — создать выделённого административного пользователя

Если вы не хотите менять поведение root, создайте отдельного пользователя с нужными привилегиями:

sudo mysql

Внутри MySQL выполните:

CREATE USER 'ubuntu'@'localhost' IDENTIFIED BY 'StrongPasswordHere';
GRANT ALL PRIVILEGES ON *.* TO 'ubuntu'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit;

Этот подход даёт гибкость: root остаётся локальным пользователем, а административные действия выполняются через отдельный аккаунт.

Управление службой MySQL (systemctl)

В Ubuntu используйте systemd для управления службой mysql.

Включить автозапуск при старте системы:

sudo systemctl enable mysql

Проверить состояние:

sudo systemctl status mysql
# или
sudo systemctl status mysql.service

Запуск/остановка/перезапуск:

sudo systemctl start mysql
sudo systemctl stop mysql
sudo systemctl restart mysql
sudo systemctl reload mysql

Статус MySQL

Если служба не запускается, смотрите логи:

sudo journalctl -u mysql --since "1 hour ago"
sudo tail -n 200 /var/log/mysql/error.log

Тестирование и проверка работоспособности

Быстрые проверки после настройки:

  1. Локальное подключение:
mysql -u root -p -e "SELECT VERSION(), USER();"
  1. Пинг сервера:
mysqladmin -u root -p ping
  1. Проверка сетевого слушания (порт по умолчанию 3306):
ss -tulpen | grep 3306
# или
sudo netstat -plnt | grep 3306
  1. Firewall (ufw) — открыть порт только при необходимости:
sudo ufw allow from  to any port 3306 proto tcp
sudo ufw status numbered
  1. Попробуйте подключение с удалённого хоста (если разрешено):
mysql -u ubuntu -p -h DB_HOST_IP

Критерии приёмки (минимальные тесты):

  • Служба запущена и отвечает на запросы.
  • Локальный и (если нужно) удалённый доступ работают с ожидаемыми правами.
  • Привилегии и политики паролей применены.
  • Порта 3306 открыт только для доверенных адресов.

Рекомендации по безопасности и жёсткая установка

  • Отключите удалённый вход под root и используйте привилегированные аккаунты с минимумом прав.
  • В конфигурации /etc/mysql/mysql.conf.d/mysqld.cnf укажите bind-address = 127.0.0.1, если не нужен удалённый доступ.
  • Включите шифрование трафика (TLS) между клиентами и сервером.
  • Настройте резервное копирование (mysqldump, Percona XtraBackup или логические/физические бэкапы).
  • Регулярно обновляйте пакеты безопасности и применяйте патчи.
  • Настройте аудит и мониторинг: slow query log, performance_schema, метрики SLI/SLO.
  • Защитите сервер на уровне сети — VPN, приватные подсети, ACL.
  • Используйте fail2ban для защиты от брутфорса по соединениям.

Альтернативные подходы и когда они уместны

  • MariaDB — форк MySQL, совместим и часто используется как drop-in замена. Подходит, если требуется открытый стек с активной разработкой.
  • Percona Server — фокус на производительности и расширенных возможностях для бэкапов и мониторинга.
  • Запуск в контейнере Docker — быстрое развертывание и изоляция; удобен для тестов и CI.
  • Управляемые базы данных (Amazon RDS, Google Cloud SQL, Azure Database) — подходят, если хотите снять с себя операции по обновлениям, бэкапам и масштабированию.

Контрпример: если у вас крупная распределённая архитектура с высокими требованиями к репликации, рассмотрите кластерные решения и прокси (ProxySQL, MySQL Group Replication, Galera) вместо одиночной инстанции.

Чек-листы по ролям

DBA:

  • Проверить конфигурации innodb_buffer_pool_size, max_connections.
  • Включить slow_query_log и оптимизировать медленные запросы.
  • Настроить регулярные бэкапы и проверять их восстановление.

Системный администратор:

  • Обеспечить обновления ОС и безопасность сети.
  • Настроить мониторинг (CPU, RAM, диск, сеть).
  • Управлять доступом через firewall и VPN.

Разработчик:

  • Использовать отдельные учётные записи с ограниченными правами.
  • Не хранить чувствительные данные в открытом виде; применять шифрование на уровне приложения.
  • Тестировать миграции на staging перед production.

SOP: Быстрый план развёртывания (Playbook)

  1. Подготовка сервера: обновите пакеты sudo apt update && sudo apt upgrade.
  2. Установка MySQL: sudo apt install mysql-server.
  3. Запустить sudo mysql_secure_installation и настроить политику паролей.
  4. Настроить аутентификацию и создать сервисных пользователей.
  5. Настроить firewall и открыть порт 3306 только для доверенных IP.
  6. Включить бэкапы и мониторинг.
  7. Тесты: локальное и удалённое подключение, резервное восстановление.

Инцидент-руководство (Runbook)

Проблема: MySQL не запускается.

  1. Посмотреть статус: sudo systemctl status mysql.
  2. Логи: sudo journalctl -u mysql -n 200 и sudo tail -n 200 /var/log/mysql/error.log.
  3. Проверить свободное место на диске: df -h.
  4. Проверить права каталога данных (обычно /var/lib/mysql).
  5. Попробовать перезапуск: sudo systemctl restart mysql.
  6. При повреждении данных — восстановить из последней корректной резервной копии.

Шпаргалка по командам (Cheat sheet)

  • Установить клиент: sudo apt install mysql-client -y
  • Установить сервер: sudo apt install mysql-server -y
  • Запустить MySQL: sudo systemctl start mysql
  • Проверить статус: sudo systemctl status mysql
  • Подключиться: mysql -u user -p -h host
  • Сменить плагин аутентификации: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pwd';
  • Сохранить привилегии: FLUSH PRIVILEGES;
  • Пинг сервера: mysqladmin -u root -p ping

Сравнение на высоком уровне

  • MySQL: стабильность, широкая экосистема, поддержка коммерческих функций в Oracle MySQL.
  • MariaDB: активная open-source разработка, совместимость, некоторые расширения.
  • Percona: оптимизации производительности, инструменты для бэкапа и восстановления.

Выбор зависит от требований: совместимость, производительность, поддержка.

Миграция и совместимость

  • При миграции с MySQL 5.7 на 8.0 проверьте совместимость SQL и изменений в поведении плагинов аутентификации.
  • Тестируйте дампы на staging, прежде чем вносить изменения в production.
  • При переходе на MariaDB убедитесь, что используемые функции поддерживаются.

Ключевые факты и пути конфигурации

  • Порт по умолчанию: 3306.
  • Файлы конфигурации: /etc/mysql/mysql.conf.d/mysqld.cnf и /etc/mysql/my.cnf.
  • Каталог данных по умолчанию: /var/lib/mysql.
  • Утилита безопасности: mysql_secure_installation.

Глоссарий (одной строкой)

  • RDBMS — реляционная система управления базами данных.
  • auth_socket — плагин аутентификации, использующий UNIX-сокет.
  • mysql_native_password, caching_sha2_password — плагины аутентификации паролей.
  • mysqld — демон сервера MySQL.

Заключение

Эта инструкция помогает быстро развернуть и безопасно настроить MySQL на Ubuntu 18.04. Она охватывает установку клиента и сервера, базовую жёсткую настройку, варианты аутентификации, управление службой, проверки и рекомендации по безопасности. Для production‑развёртываний дополнительно планируйте мониторинг, репликацию и регулярные бэкапы.

Заметки:

  • Если вы развертываете новую инфраструктуру, рассмотрите более новые версии ОС и СУБД для длительной поддержки.
  • Для облачных или критичных систем подумайте о managed-решениях, чтобы снять часть операционных задач.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Установка Arch Linux с Antergos — просто
Linux

Установка Arch Linux с Antergos — просто

Как установить и пользоваться winget
Windows

Как установить и пользоваться winget

Теория цвета: практическое руководство
Дизайн

Теория цвета: практическое руководство

Как отменить подписку Audible быстро
Обзоры

Как отменить подписку Audible быстро

Как конвертировать DOCX в PDF в Windows 11
Windows

Как конвертировать DOCX в PDF в Windows 11

Бесплатные курсы по кибербезопасности — 6 лучших
Кибербезопасность

Бесплатные курсы по кибербезопасности — 6 лучших