
Как установить MariaDB для WordPress на VPS
Устанавливаем MariaDB, ограничиваем её локальным сервером, создаём отдельную базу и пользователя WordPress, проверяем доступ и готовим копирование.
Содержание
WordPress хранит публикации, пользователей и настройки в MariaDB. На VPS с одним сайтом база должна принимать локальные подключения, а приложение — работать под отдельной учётной записью только со своей базой. Пароль администратора MariaDB в WordPress не нужен.
Перед установкой убедитесь, что на диске достаточно места и система обновлена. Если на сервере уже есть MySQL или MariaDB с данными, не устанавливайте второй сервер поверх него: сначала определите текущую версию, каталоги и способ резервного копирования.
Установите сервер из репозитория ОС
Команды ниже обновляют индекс пакетов, устанавливают MariaDB и показывают состояние службы. Они подходят для Ubuntu с официальными репозиториями дистрибутива:
sudo apt update
sudo apt install mariadb-server
systemctl status mariadb --no-pager
Служба должна быть активна без повторяющихся ошибок. Если apt предлагает заменить существующую СУБД или удалить её пакеты, отмените установку и составьте план миграции. Название пакета не гарантирует совместимость существующих файлов данных.
Убедитесь, что база не выставлена в интернет
ss показывает слушающие TCP-порты, а SQL-запрос — фактический bind_address. Обе проверки нужны: конфигурация и работающий процесс могут отличаться до перезапуска.
sudo ss -lntp | grep -E '3306|mariadbd|mysqld'
sudo mariadb -e "SHOW VARIABLES LIKE 'bind_address';"
Для WordPress на том же VPS ожидайте 127.0.0.1, ::1 или отсутствие сетевого порта при использовании сокета. Адрес 0.0.0.0 означает приём на всех IPv4-интерфейсах. В таком случае найдите активный конфигурационный файл, задайте loopback-адрес, проверьте синтаксис доступным для вашей версии способом и перезапустите службу в согласованное окно.
Firewall остаётся дополнительной границей, но не заменяет локальную привязку. Служба, которой не нужны внешние клиенты, не должна слушать публичный интерфейс.
Создайте базу и отдельного пользователя
Сначала придумайте длинный случайный пароль и сохраните его в менеджере секретов. Не вставляйте реальный пароль в shell history. Откройте локальную консоль MariaDB командой sudo mariadb, затем выполните SQL ниже, заменив пример пароля:
CREATE DATABASE wordpress
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
CREATE USER 'wp_app'@'localhost'
IDENTIFIED BY 'ЗАМЕНИТЕ_НА_СЛУЧАЙНЫЙ_ПАРОЛЬ';
GRANT ALL PRIVILEGES ON wordpress.*
TO 'wp_app'@'localhost';
Первая команда создаёт базу wordpress, вторая — локальную учётную запись без прав, третья выдаёт ей права только на объекты этой базы. WordPress должен создавать и изменять свои таблицы, поэтому для обычной установки требуются права уровня базы. WITH GRANT OPTION и глобальные права ON *.* приложению не нужны.
Команды CREATE USER и GRANT применяются сразу; FLUSH PRIVILEGES здесь не требуется. Если имя уже существует, не используйте OR REPLACE вслепую: сначала посмотрите текущие права и выясните, кому принадлежит учётная запись.
Проверьте права глазами и реальным входом
В административной консоли запросите выданные права. Затем выйдите и подключитесь именно как приложение. Параметр -p запросит пароль без его появления в строке процесса и истории:
SHOW GRANTS FOR 'wp_app'@'localhost';
В выводе должна быть строка с правами на wordpress.*, но не глобальные права на *.* и не GRANT OPTION. После этой проверки закройте административную консоль и выполните отдельный вход с реквизитами приложения:
mariadb -u wp_app -p wordpress
После входа выполните SELECT DATABASE(); и SHOW TABLES;. До установки WordPress список таблиц будет пуст, а текущая база должна называться wordpress. Попытка SHOW DATABASES может показывать только доступные учётной записи базы — это ожидаемое ограничение.
Передайте реквизиты WordPress без лишнего доступа
В wp-config.php понадобятся четыре значения: имя базы wordpress, пользователь wp_app, его пароль и адрес localhost. Разница между localhost и 127.0.0.1 зависит от клиентской библиотеки: первое значение часто выбирает Unix-сокет, второе — TCP loopback. Используйте вариант, который проверен на вашем сервере.
Файл конфигурации должен читаться пользователем PHP-FPM, но не редактироваться им без необходимости. Не публикуйте пароль в Git, скриншоте или команде с аргументом -pPASSWORD.
Подготовьте журнал и медленные запросы до проблемы
Основной журнал службы доступен через systemd. Проверьте его сразу после установки и сохраните команду для диагностики:
journalctl -u mariadb -b --no-pager -n 100
sudo mariadb -e "SHOW GLOBAL STATUS LIKE 'Threads_connected';"
sudo mariadb -e "SHOW GLOBAL STATUS LIKE 'Slow_queries';"
Счётчик Slow_queries полезен только вместе с фактическими настройками порога и журнала. Не включайте подробное логирование надолго без контроля размера и доступа: запросы могут содержать пользовательские данные.
Сделайте первый dump до запуска сайта
Пустая база быстро восстанавливается, но сама процедура уже должна быть известна. После установки WordPress логическую копию создаёт mariadb-dump. В команде пароль запрашивается интерактивно:
mariadb-dump -u wp_app -p \
--single-transaction --default-character-set=utf8mb4 \
wordpress > wordpress.sql
sha256sum wordpress.sql
--single-transaction даёт согласованный снимок таблиц InnoDB без долгой общей блокировки; таблицы других движков требуют отдельной оценки. SQL-файл содержит содержимое сайта, поэтому ограничьте права, скачайте его на локальный компьютер и проверьте восстановление в отдельную тестовую базу.
Следующий шаг — установка файлов WordPress и создание wp-config.php. Общая роль базы в цепочке запросов разобрана в статье об архитектуре.
Источники
Самопроверка
Проверьте, что материал усвоен
Ответьте на все вопросы. Результат сохранится только в этом браузере и будет учтён в статистике прочитанных материалов.
Разбираем коротко
Частые вопросы
Нужно ли открывать порт 3306 для WordPress на том же VPS?
Нет. Приложение может подключаться через loopback-адрес или Unix-сокет. Публичный порт нужен только отдельной архитектуре с сетевыми ограничениями и шифрованием.
Можно ли использовать root MariaDB в wp-config.php?
Не следует. Создайте отдельного пользователя только для базы сайта. Компрометация WordPress тогда не даст административный доступ ко всем базам сервера.
Зачем задавать utf8mb4?
Эта кодировка хранит полный набор символов Unicode. WordPress использует и согласует кодировку с базой; менять её на существующем сайте нужно только после проверки таблиц и резервной копии.


