MAATRIX / Блог / MySQL на Ubuntu 24.04: пошаговая установка

MySQL на Ubuntu 24.04: пошаговая установка

MySQL на Ubuntu 24.04: пошаговая установка

MAATRIX

Установка MySQL на Ubuntu 24.04 (Noble Numbat) проста, но у этой версии системы есть свои нюансы: MySQL 8 из штатного репозитория, аутентификация root через auth_socket, обновлённая работа с локалями. Ниже — пошаговый путь именно под Ubuntu 24.04: подготовка системы, установка, обязательная первичная защита, работа с сокетной аутентификацией, создание пользователей, правильная кодировка и автозапуск. Всё с учётом особенностей Noble, чтобы обойти типичные грабли.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Подготовка системы

Обновите Ubuntu перед установкой — это снимает конфликты зависимостей на свежем VPS:

sudo apt update && sudo apt upgrade -y

Ubuntu 24.04 по умолчанию работает в UTF-8, и это хорошо для MySQL: правильная кодировка русского текста получается почти без усилий. Но саму базу всё равно нужно создавать в utf8mb4 — об этом ниже. Проверьте, что системная локаль в UTF-8, командой locale; если нужной нет, сгенерируйте её через sudo locale-gen ru_RU.UTF-8. Это влияет на корректную работу с русским текстом в консоли и утилитах.

Определитесь заранее: для российских проектов логичен VPS в RU-локации с минимальным пингом и хранением персональных данных в стране по 152-ФЗ, для зарубежных сервисов — US или UK. Локацию удобно выбрать сразу при заказе сервера.

Установка MySQL 8

В штатном репозитории Ubuntu 24.04 лежит MySQL 8 — актуальная версия для подавляющего большинства задач. Установка в одну команду:

sudo apt install -y mysql-server
sudo systemctl enable --now mysql

Проверьте, что сервер запустился и слушает порт:

sudo systemctl status mysql
sudo ss -ltnp | grep 3306

В отличие от старых версий, установщик в Ubuntu 24.04 не спрашивает пароль root при установке — root настроен на вход через сокет, о чём подробнее дальше. Данные лежат в /var/lib/mysql, конфиги — в /etc/mysql, основной пользовательский конфиг для правок — /etc/mysql/mysql.conf.d/mysqld.cnf.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS с Ubuntu 24.04

Обязательная первичная защита

Свежая установка небезопасна: тестовые данные, слабая политика паролей. Запустите штатный скрипт защиты:

sudo mysql_secure_installation

Он проведёт по шагам: настроить политику надёжности паролей, удалить анонимных пользователей, запретить удалённый вход root, удалить тестовую базу, перезагрузить привилегии. Отвечайте утвердительно на всё. Это минимум гигиены, без которого сервер уязвим с первой минуты. На вопрос про плагин проверки паролей (VALIDATE PASSWORD) можно согласиться, если готовы использовать сложные пароли, — на боевом сервере это правильный выбор.

Особенность Ubuntu: auth_socket для root

Ключевая деталь MySQL 8 на Ubuntu, которая сбивает с толку: root входит через плагин auth_socket, то есть только локально из-под системного root, без пароля по сети. Поэтому вы заходите в базу так, а не по паролю:

sudo mysql

Это удобно и безопасно: чтобы стать администратором MySQL, нужно уже иметь права root на сервере. Не пытайтесь «починить» это, переключив root на пароль — сокетная аутентификация надёжнее. Первым барьером защиты становится доступ к серверу по SSH-ключу. Держите SSH под ключом с отключённым входом по паролю, и административный доступ к базе защищён на уровне операционной системы, а не только паролем.

Если какой-то инструмент (например, панель управления или скрипт бэкапа) требует именно парольного входа root по TCP и не умеет работать через сокет, правильнее не ломать защиту root, а завести отдельного административного пользователя с нужными правами и паролем специально под этот инструмент. Так вы сохраняете сокетную защиту основного root и при этом даёте инструменту то, что ему нужно, с ограниченными и понятными правами. Смешивать эти вещи и раздавать всем полный доступ root — распространённая ошибка, которая позже выходит боком при разборе инцидентов.

Пользователь, база и кодировка utf8mb4

Приложение не должно работать под root. Создайте отдельного пользователя и базу с правильной кодировкой. Зайдите через sudo mysql и выполните:

CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'слоЖный_Пароль_2026';
GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost';
FLUSH PRIVILEGES;

Обязательно используйте utf8mb4 — это полноценный UTF-8 с поддержкой эмодзи и всех символов, в отличие от урезанного трёхбайтового utf8, который в MySQL исторически неполон. Если создать базу в неправильной кодировке, позже поймаете искажения русского текста, и чинить придётся восстановлением из дампа. Проверьте вход: mysql -u appuser -p appdb.

Стоит закрепить привычку выдавать пользователю ровно те права, что ему нужны. Для типичного веб-приложения ALL PRIVILEGES на одну свою базу — разумный минимум: пользователь распоряжается своей базой, но не видит чужих и не трогает настройки сервера. Если же приложение только читает данные (отчётный сервис, витрина), заведите ему пользователя с правом SELECT — тогда даже при утечке его пароля никто не изменит данные. Такое разграничение по ролям почти ничего не стоит на этапе настройки, но заметно снижает ущерб при любой компрометации, и заложить его лучше сразу, а не переделывать потом на работающем проекте.

Автозапуск и дальнейшие шаги

На Ubuntu 24.04 MySQL уже настроен на автозапуск через systemd — проверьте командой sudo systemctl is-enabled mysql, ответ должен быть enabled. После перезагрузки сервера база поднимется сама. По умолчанию MySQL слушает только localhost, что безопасно: если приложение на том же VPS, открывать порт не нужно.

Если нужен доступ с другого сервера, привяжите MySQL к внутреннему адресу в mysqld.cnf, заведите пользователя под конкретный IP и закройте порт 3306 фаерволом, а лучше ходите через SSH-туннель. Включите автоматические обновления безопасности через unattended-upgrades, чтобы MySQL и Ubuntu получали патчи автоматически. Настройте резервное копирование через mysqldump --single-transaction по cron с выгрузкой копии на отдельное хранилище: база без бэкапа однажды обернётся потерей данных, а завести копирование в первый день намного проще, чем сожалеть о его отсутствии потом. Проверьте хотя бы раз, что дамп реально разворачивается на тестовой базе, — непроверенная копия часто оказывается неполной именно тогда, когда она нужна. И следите за свободным местом: переполнение диска накопившимися копиями или бинлогами роняет MySQL так же надёжно, как отказ железа. Чтобы всё работало на стабильном железе, нужен надёжный VPS с Ubuntu 24.04. В MAATRIX можно арендовать сервер с Ubuntu под MySQL в России, США или Великобритании и оплатить картой РФ, по СБП, криптой или токеном MAAT — иностранная карта не нужна.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS с Ubuntu 24.04

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Частые вопросы

Какая версия MySQL в Ubuntu 24.04?

MySQL 8 из штатного репозитория — актуальная версия для большинства задач, получает обновления безопасности вместе с системой. Отдельный репозиторий Oracle нужен только под особые требования.

Почему установщик не спросил пароль root?

В Ubuntu 24.04 root входит через auth_socket — локально из-под системного root без пароля. Заходите командой sudo mysql, а для приложений заводите отдельных пользователей с паролями.

Как избежать кракозябр в русском тексте?

Создавайте базы с CHARACTER SET utf8mb4 и убедитесь, что приложение подключается в той же кодировке. Урезанный utf8 в MySQL неполон, используйте именно utf8mb4.

MySQL запустится после перезагрузки сам?

Да, автозапуск через systemd настроен по умолчанию. Проверить можно командой systemctl is-enabled mysql.

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.