цены сверены 21 октября 2026 года

Установка MySQL 8 на VPS с Ubuntu 24.04

MySQL 8 ставится из репозитория Ubuntu 24.04 командой sudo apt install mysql-server. После установки база принимает подключения только с самого сервера, и для сайта на этом же VPS этого достаточно.

Установка MySQL 8 на VPS с Ubuntu 24.04
Содержание
  1. Как поставить MySQL
  2. Что делает mysql_secure_installation
  3. Почему root входит без пароля
  4. Как создать базу и пользователя для сайта
  5. Можно ли достучаться до базы снаружи
  6. Как открыть доступ с другого компьютера
  7. Где лежат настройки и журналы
  8. Хватит ли памяти под базу
  9. Как сделать копию базы и восстановить её
  10. MySQL или MariaDB
  11. Что делать дальше
Команды проверены 14 октября 2026 годачистая Ubuntu 24.04 · MySQL 8.0.46Как мы проверяем

У вас новый VPS на Ubuntu 24.04, и на нём должен заработать сайт, например WordPress. Сайту нужно где-то хранить статьи, пользователей и настройки, то есть нужна база данных. Поставим MySQL, создадим для сайта отдельную базу site_db и пользователя site_user, закроем лишний доступ и сделаем первую копию.

Как поставить MySQL

MySQL это сервер баз данных: в нём лежат записи сайта. В репозитории Ubuntu 24.04 есть версия 8.0 (на 14 октября 2026 года 8.0.46), так что отдельный репозиторий не нужен.

sudo apt update
sudo apt install mysql-server

Первая команда обновляет список пакетов. Вторая ставит сервер и клиент mysql, создаёт служебные базы и запускает службу. Если сервер совсем новый, сначала сделайте первую настройку VPS на Ubuntu.

Проверьте, что служба работает:

sudo systemctl status mysql

В ответе нужна строка active (running).

Что делает mysql_secure_installation

sudo mysql_secure_installation

Скрипт задаёт вопросы и убирает небезопасные настройки: анонимных пользователей, тестовую базу и удалённый вход для root. Первый вопрос про компонент проверки паролей (VALIDATE PASSWORD): если его включить, слабые пароли будут отклоняться. Пароль root скрипт менять не станет и напишет Skipping password set for root. Так и должно быть, объяснение в следующем разделе. На остальные вопросы (удалить анонимных пользователей, запретить удалённый вход root, удалить тестовую базу, перезагрузить права) отвечайте y.

Почему root входит без пароля

В Ubuntu root в MySQL входит не по паролю, а через auth_socket. Сервер смотрит, кто запустил клиент, и если это системный root (или sudo), пускает.

sudo mysql

Откроется консоль mysql> от имени администратора базы, выйти из неё можно командой exit. Пароль никто не спросит, и это нормально: подобрать его снаружи нельзя, потому что войти может только тот, кто уже получил sudo на сервере.

Как создать базу и пользователя для сайта

Сайту под root ходить не нужно, ему хватит своей базы и своего пользователя. В консоли mysql> выполните:

CREATE DATABASE site_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'site_user'@'localhost' IDENTIFIED BY 'замените-на-длинный-пароль';
GRANT ALL PRIVILEGES ON site_db.* TO 'site_user'@'localhost';

Первая строка создаёт базу site_db в кодировке utf8mb4, в которой русские буквы и эмодзи хранятся без ошибок. Вторая создаёт пользователя, и @'localhost' значит, что подключаться он может только с самого сервера. Третья даёт ему все права на эту базу и ни на какую другую. Имена и пароль замените на свои.

Проверьте вход под новым пользователем:

mysql -u site_user -p site_db

-u задаёт пользователя, -p просит пароль, последнее слово это база. Команды SQL заканчиваются точкой с запятой. Для начала хватит двух: SHOW DATABASES; и SHOW TABLES;.

Теперь у сайта есть база, имя пользователя и пароль, их и вписывайте в настройки WordPress.

Можно ли достучаться до базы снаружи

По умолчанию нельзя. В Ubuntu сервер слушает адрес 127.0.0.1, и это легко проверить:

sudo ss -tlnp | grep 3306

ss -tlnp выводит слушающие TCP-порты и программы, а grep оставляет порт 3306. Если вы видите 127.0.0.1:3306, в базу снаружи не попасть. Сайту на том же VPS внешний доступ не нужен, он подключается именно так, поэтому здесь ничего менять не надо.

Как открыть доступ с другого компьютера

Открытый наружу порт базы сканируют боты, а пароли к нему подбирают. Открывайте доступ, только если без него нельзя, и только для одного IP. Перед этим убедитесь, что у вас есть резервная копия и вы не потеряете вход по SSH из-за ошибки в файрволе.

Нужны три шага. Для примера берём клиентский адрес 203.0.113.5 и адрес сервера 198.51.100.10, подставьте свои.

Шаг 1. Откройте файл настроек:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Найдите строку bind-address и задайте адрес сервера (не 0.0.0.0: так сервер слушает только нужный интерфейс):

bind-address = 198.51.100.10

Если у хостера внешний адрес не виден в выводе ip -4 addr, укажите внутренний. Примените изменение:

sudo systemctl restart mysql

Шаг 2. Создайте отдельного пользователя, привязанного к вашему адресу:

CREATE USER 'remote_user'@'203.0.113.5' IDENTIFIED BY 'другой-длинный-пароль';
GRANT ALL PRIVILEGES ON site_db.* TO 'remote_user'@'203.0.113.5';

Пара «имя и хост» в MySQL это отдельная учётная запись, так что эта запись работает только с адреса 203.0.113.5.

Шаг 3. Откройте порт в файрволе только для этого адреса:

sudo ufw allow from 203.0.113.5 to any port 3306 proto tcp

Правило пропускает на порт 3306 соединения с одного адреса, остальные отбрасываются. Порядок включения файрвола описан в статье настройка файрвола ufw. Если ваш домашний адрес меняется, надёжнее подключаться через SSH-туннель: ssh -L 3306:127.0.0.1:3306 user@сервер. Тогда порт наружу открывать не нужно вовсе.

Где лежат настройки и журналы

Что Где
Основной файл настроек /etc/mysql/mysql.conf.d/mysqld.cnf
Свои правки (удобнее) новый файл в /etc/mysql/conf.d/ с секцией [mysqld]
Данные баз /var/lib/mysql/
Журнал ошибок /var/log/mysql/error.log

Свои правки удобнее держать в отдельном файле, чтобы не трогать основной. Журнал службы смотрите так: sudo journalctl -u mysql -n 50, команда выводит последние 50 строк. О журналах подробнее в статье журналы и службы systemd.

Хватит ли памяти под базу

На сервере с 1 ГБ MySQL 8 ставится и работает, но запас невелик. Сразу после установки служба mysqld занимает около 400 МБ оперативной памяти, а дальше это число растёт вместе с нагрузкой и размером баз. Поэтому для сайта и базы на одном VPS разумно брать 2 ГБ. Сравнить тарифы можно в подборе VPS: в нашей базе VPS стоят от 140 ₽ в месяц, цены сверены 21 октября 2026 года.

Если памяти мало, потребление можно уменьшить. Создайте файл:

sudo nano /etc/mysql/conf.d/low-memory.cnf

И добавьте:

[mysqld]
performance_schema = OFF
innodb_buffer_pool_size = 256M
max_connections = 50

С этими тремя строками свежий MySQL занимает около 170 МБ вместо 400. Главную часть экономии даёт performance_schema = OFF: он отключает сбор внутренней статистики. innodb_buffer_pool_size задаёт кэш данных InnoDB, по умолчанию он 128 МБ, а на сервере с 1-2 ГБ подойдёт от 128 до 512 МБ в зависимости от размера базы. max_connections ограничивает число одновременных подключений. Чтобы настройки сработали, перезапустите службу: sudo systemctl restart mysql.

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

Как сделать копию базы и восстановить её

sudo mysqldump --single-transaction site_db > site_db.sql

mysqldump выгружает базу в текстовый файл с командами SQL. Ключ --single-transaction делает согласованный снимок таблиц InnoDB, и сайт при этом не останавливается. Файл появится в текущем каталоге. Выгрузку выполняет root через sudo, поэтому пароль не нужен.

Восстановление в существующую пустую базу выглядит так:

sudo mysql site_db < site_db.sql

< передаёт файл клиенту mysql, и тот выполняет команды из него. Проверяйте восстановление на тестовой базе: копия, которую ни разу не открывали, остаётся предположением. И копируйте дампы на другой сервер, а про расписание и хранение читайте в статье резервные копии VPS.

MySQL или MariaDB

MariaDB это ответвление MySQL с тем же протоколом и похожими командами. В Ubuntu она ставится командой sudo apt install mariadb-server. Для WordPress и большинства сайтов подойдёт любая из двух, поэтому выбирайте то, что рекомендует ваша программа. Если ничего конкретного не требуется, берите MySQL, как в этой статье.

Вместе из пакетов они не ставятся: apt install mariadb-server удалит пакеты MySQL. Если вам нужна другая база, посмотрите установку PostgreSQL, а для кэша и очередей установку Redis.

Что делать дальше

База site_db есть, пользователь site_user подключается только с сервера, копия снимается одной командой. Теперь можно ставить сайт: переходите к установке WordPress на VPS. Если памяти не хватило, подобрать сервер побольше можно в каталоге VPS: там 262 тарифов у 20 хостеров.