Как установить и настроить базу данных MariaDB/MySQL на VPS?

В этой статье разберём на примере Ubuntu/Debian:

  • чем отличается MariaDB от MySQL на VPS;
  • как установить сервер и проверить, что он запустился;
  • как выполнить базовую «зачистку» через mysql_secure_installation;
  • как создать отдельную базу и пользователя для проекта;
  • как включить корректную кодировку utf8mb4;
  • какие ошибки чаще всего вылезают и как из них выкарабкаться.

MariaDB или MySQL на VPS: что именно ставим

На современных Ubuntu/Debian по умолчанию ставится MariaDB — форк MySQL, полностью совместимый по протоколу и большинству команд. Для обычного сайта (WordPress, Bitrix, самописный PHP) нет разницы: как правило, достаточно MariaDB из стандартных репозиториев.

  • Если базы ещё нет — проще и безопаснее поставить MariaDB стандартным пакетом.

  • Если MySQL уже стоит (на старом сервере) — не нужно ставить MariaDB поверх, работайте с тем, что есть.

Дальше в статье будем говорить «MariaDB/MySQL», но команды будут даны так, чтобы они нормально отработали на типичной Ubuntu-VPS с MariaDB.

Установка MariaDB на Ubuntu/Debian

Сначала обновим список пакетов и поставим сервер и клиент:

sudo apt update
sudo apt install -y mariadb-server mariadb-client

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

sudo systemctl status mariadb

Если статус active (running) — всё ок. Если службы mariadb нет, на вашем образе может использоваться сервис mysql:

sudo systemctl status mysql

На всякий случай проверим, слушается ли порт 3306:

ss -tulpn | grep 3306 || echo "Порт 3306 не слушается"
Установка MariaDB на Ubuntu

Первичный вход в консоль и важный момент с root

На Ubuntu чаще всего root MySQL не имеет пароля, а авторизация идёт через Unix-сокет. Поэтому команда:

mysql -u root -p

может дать Access denied, хотя всё установлено правильно.

Правильный способ зайти после установки:

sudo mariadb
# или, если службы mariadb нет:
sudo mysql

Вы должны попасть в консоль вида:

MariaDB [(none)]>

Запомни: если что-то пошло не так с паролями и пользователями, почти всегда можно зайти так: sudo mariadb и уже внутри всё поправить.

Базовая защита: mysql_secure_installation

Скрипт mysql_secure_installation помогает удалить мусорные записи и при желании задать пароль root.

sudo mysql_secure_installation

Дальше по шагам (вариант для типичной новой установки MariaDB):

  • Enter current password for root (enter for none): На свежей Ubuntu чаще всего пароля нет — просто жмём Enter.

  • Set root password? [Y/n] Если хочешь логиниться как root с паролем, ответь Y, введи и запомни пароль. Если планируешь пользоваться только sudo mariadb и отдельным админ-юзером — можно ответить n.

  • Remove anonymous users? [Y/n] — жми Y.

  • Disallow root login remotely? [Y/n] — лучше Y, root по сети обычно не нужен.

  • Remove test database and access to it? [Y/n]Y.

  • Reload privilege tables now? [Y/n]Y.

Если где-то ошибся — не страшно, дальше покажем, как создать нормального админа и базу.

Настройка mysql_secure_installation для MariaDB

Создаём отдельного администратора вместо root

Работать от root в базе — плохая идея. Гораздо безопаснее завести отдельного пользователя-администратора и уже от него создавать базы для сайтов.

Заходим в MariaDB:

sudo mariadb

Создаём админа (замени пароль на нормальный):

CREATE USER 'dbadmin'@'localhost' IDENTIFIED BY 'SlozhnyjParol_2025!';
GRANT ALL PRIVILEGES ON *.* TO 'dbadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Проверяем, что вход работает (из обычного пользователя):

mysql -u dbadmin -p

С этого момента для админских задач лучше использовать пользователя dbadmin, а не root.

Создание базы данных и пользователя для сайта

Допустим, у нас есть проект myproject. Для него создадим отдельную базу и пользователя.

Заходим под админом (root или dbadmin):

mysql -u dbadmin -p

Создаём базу в нормальной кодировке:

CREATE DATABASE myproject
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

Создаём пользователя только для этой базы:

CREATE USER 'myproject'@'localhost' IDENTIFIED BY 'SaitParol_2025!';
GRANT ALL PRIVILEGES ON myproject.* TO 'myproject'@'localhost';
FLUSH PRIVILEGES;

Проверяем вход:

mysql -u myproject -p
SHOW DATABASES;

В списке должна быть база myproject.

Создание базы и пользователя в MariaDB

Настройка кодировки по умолчанию (utf8mb4)

Чтобы не ловить проблемы с эмодзи и русскими символами, лучше сразу включить utf8mb4 по умолчанию.

Открываем основной конфиг сервера MariaDB/MySQL (на Ubuntu обычно так):

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Внутри ищем блок [mysqld] и добавляем в него строки (если их нет):

[mysqld]
character-set-server = utf8mb4
collation-server     = utf8mb4_unicode_ci

Сохраняем и перезапускаем сервер:

sudo systemctl restart mariadb
# или
sudo systemctl restart mysql

Проверяем в консоли:

SHOW VARIABLES LIKE 'character_set_server';
SHOW VARIABLES LIKE 'collation_server';

Должно быть utf8mb4 и utf8mb4_unicode_ci.

Удалённый доступ к базе: bind-address и фаервол

По умолчанию MariaDB слушает только 127.0.0.1 — это безопасно и правильно для обычного сайта. Если подключаться будет только PHP на этом же VPS, ничего менять не нужно.

Если же нужна удалённая админка (например, с рабочего компьютера через MySQL Workbench):

  1. Открываем конфиг:

    sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
  2. Находим строку:

    bind-address            = 127.0.0.1

    И меняем на IP сервера или 0.0.0.0 (осторожно):

    bind-address            = 0.0.0.0
  3. Открываем порт в фаерволе только для своего IP (пример для UFW):

    sudo ufw allow from YOUR.IP.ADDR.HERE to any port 3306 proto tcp
  4. Перезапускаем сервер:

    sudo systemctl restart mariadb

Если не уверен, что делаешь — лучше вообще не открывать 3306 наружу, а подключаться через SSH-туннель.

Частые ошибки и как их чинить

  • Access denied for user ‘root’@’localhost’

    Заходим так:

    sudo mariadb

    И меняем пароль root (если он нужен):

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'NovyjParol_2025!';
    FLUSH PRIVILEGES;
  • ERROR 2002 (HY000): Can’t connect to local MySQL server through socket

    Скорее всего, сервер не запущен:

    sudo systemctl status mariadb
    sudo systemctl start mariadb

    Если не стартует — смотрим лог:

    sudo journalctl -u mariadb -xe
  • Не получается зайти под новым пользователем

    Проверь хост в пользователе: если создал 'user'@'localhost', то зайти с другого сервера не получится — нужно 'user'@'%' или конкретный IP.

  • Проблемы с кодировкой (кракозябры)

    Проверь:

    SHOW VARIABLES LIKE 'char%';

    Если где-то latin1 — вернись к шагу с utf8mb4 и настрой всё по умолчанию.

Итоги

  • Установили MariaDB/MySQL из стандартных репозиториев Ubuntu/Debian.

  • Зашли в консоль через sudo mariadb и провели начальную «зачистку».

  • Создали отдельного админа и пользователя/базу для проекта.

  • Настроили кодировку utf8mb4 и разобрались с bind-address.

  • Разобрали типичные ошибки: Access denied, проблемы с сокетом и кодировкой.

Вывод: главное — не работать под root, сразу заводить отдельные базы/пользователей и держать базу закрытой от внешнего мира. Тогда MariaDB/MySQL на VPS будет вести себя предсказуемо и безопасно.

Оставить комментарий