У вас новый 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 хостеров.
