DGuard

MySQL и MariaDB для плагинов Minecraft: когда нужны и как настроить

Одному серверу обычно хватает файловой базы, которую плагин создаёт сам. MySQL или MariaDB нужна, когда данные делят несколько серверов или их очень много. Разбираем, как создать базу и пользователя с правами только на неё, подключить LuckPerms и CoreProtect, не открыть базу в интернет и не потерять её при сбое.

Команда DGuard7 мин

Коротко: на одном сервере оставьте хранилище по умолчанию — H2, SQLite или файлы. Сеть серверов, общие права, баны и синхронизация инвентарей требуют сетевой базы: MySQL, MariaDB или PostgreSQL. Каждому плагину — своя база и свой пользователь с правами только на неё, сервер базы слушает только 127.0.0.1 или закрыт файрволом, а резервная копия делается mysqldump вместе с миром.

Когда хватает файлов, а когда нужна MySQL

ХранилищеПримерыПлюсыМинусы
Текстовые файлыYAML, JSONМожно читать и править рукамиНеудобны для массовых запросов, данные не поделить между серверами
Файловая базаH2, SQLiteНичего настраивать не нужно, работает сразуОдин файл на одном сервере: данные не поделить между серверами
Сетевая базаMySQL, MariaDB, PostgreSQLОбщие данные для нескольких серверов, больше данных, одновременные запросыОтдельный сервис, его надо ставить, защищать и копировать
По документации LuckPerms о типах хранилища

Документация LuckPerms формулирует правило прямо: сетевая база рекомендуется тем, кто ждёт много данных или думает о сети серверов, а если серверов уже несколько и данные должны быть общими, она обязательна. Файловые базы, по той же документации, иногда страдают от повреждения данных, но для одного сервера это разумный выбор по умолчанию.

  • Сеть серверов. Права LuckPerms, баны и мут, экономика должны быть одинаковыми на лобби и режимах — значит, все копии плагина подключаются к одной базе. Как устроена такая сеть — в статье сеть серверов Minecraft.
  • Плагин требует базу. Например, HuskSync, который переносит инвентари, эндер-сундуки и опыт между серверами, по документации требует MySQL, MariaDB, PostgreSQL или MongoDB и ещё сервер Redis.
  • Много данных. По документации LuckPerms, сетевая база справляется с большим объёмом данных и одновременными запросами лучше файла. Для крупного сервера MySQL умеет и CoreProtect.

MySQL или MariaDB

Плагину почти всё равно: по документации MariaDB её клиентский протокол двоично совместим с протоколом MySQL, а коннекторы MySQL, включая Java, работают с MariaDB без изменений. LuckPerms в списке хранилищ прямо пишет «MariaDB (preferred over MySQL)». На своём VPS ставьте MariaDB из репозитория дистрибутива, на игровом хостинге спросите, выдаёт ли он базу к серверу: многие дают MySQL прямо в панели — см. лучшие хостинги Minecraft.

База и пользователь с правами только на неё

Не подключайте плагины под root. Создайте каждому плагину свою базу и своего пользователя: если пароль утечёт из конфига, пострадает одна база, а не все. Команды — в консоли mariadb или mysql от администратора:

SQL: база и пользователь для LuckPerms и CoreProtect
CREATE DATABASE luckperms;
CREATE USER 'luckperms'@'localhost' IDENTIFIED BY 'длинный-случайный-пароль-1';
GRANT ALL ON luckperms.* TO 'luckperms'@'localhost';

CREATE DATABASE coreprotect;
CREATE USER 'coreprotect'@'localhost' IDENTIFIED BY 'длинный-случайный-пароль-2';
GRANT ALL ON coreprotect.* TO 'coreprotect'@'localhost';
  • luckperms.* — права на уровне одной базы: на все её таблицы и только на них. Чужие базы этот пользователь не видит.
  • 'luckperms'@'localhost' — вход только с этой же машины. Аккаунт в MySQL и MariaDB — это пара «имя@хост».
  • Если Minecraft на другой машине, вместо localhost укажите её IP: 'luckperms'@'10.0.0.5'. Документация MariaDB отдельно предупреждает, что открывать root для всех хостов ('root'@'%') в интернет крайне не рекомендуется.

Подключаем LuckPerms

plugins/LuckPerms/config.yml
storage-method: mariadb

data:
  address: localhost
  database: luckperms
  username: luckperms
  password: 'длинный-случайный-пароль-1'
  table-prefix: 'luckperms_'

По умолчанию в storage-method стоит h2, а в data — пользователь root с пустым паролем: впишите своего. База должна существовать заранее — LuckPerms её не создаёт. Порт можно не писать, если он стандартный, иначе — адрес:порт. Перенести права из H2 в MySQL можно встроенными командами: /lp export <файл>, смена storage-method и перезапуск, затем /lp import <файл>. Остальное о LuckPerms — в отдельной статье.

Подключаем CoreProtect

plugins/CoreProtect/config.yml (версии 24.x)
use-mysql: true
table-prefix: co_
mysql-host: 127.0.0.1
mysql-port: 3306
mysql-database: coreprotect
mysql-username: coreprotect
mysql-password: длинный-случайный-пароль-2

В публичных сборках 24.x данные по умолчанию лежат в SQLite, а MySQL включается ключом use-mysql. В CoreProtect 25.0 и новее движок выбирает ключ database-type (duckdb, clickhouse, sqlite или mysql), и новые установки по умолчанию пишут в DuckDB. Учтите: смена движка открывает отдельный набор данных и не переносит старый — для переезда в документации есть отдельная инструкция по миграции. Как пользоваться самим CoreProtect — в статье CoreProtect.

Порт 3306 — не для интернета

Сервер базы с паролем из чужого конфига — это доступ ко всем правам, банам и логам сервера. Защита та же, что для RCON: база слушает только локальный адрес или закрыта файрволом.

  • Привязка к localhost. В разделе [mysqld] конфига сервера базы — bind-address = 127.0.0.1, затем перезапуск. Многие пакеты MariaDB, по её документации, так и настроены по умолчанию, а у MySQL значение по умолчанию — *, то есть все адреса машины.
  • Файрвол. Если база нужна серверам на других машинах, откройте 3306 только для их IP, как порты бэкендов в сети с прокси.
  • Свои пароли. У каждого плагина свой пользователь и длинный случайный пароль. Выкладываете конфиг в обсуждение или поддержку — сначала уберите пароль.
проверить, на каком адресе слушает база
sudo ss -tlnp | grep 3306
# 127.0.0.1:3306 — только локально; 0.0.0.0:3306 или *:3306 — все адреса

Резервные копии базы

Базы плагинов лежат не в папке сервера, поэтому копия мира их не спасёт. Выгружайте их отдельно и по тому же расписанию:

дамп и восстановление (логин и пароль — в ~/.my.cnf, раздел [client])
mysqldump --single-transaction --databases luckperms coreprotect > db-$(date +%F).sql

# восстановление: дамп с --databases сам создаёт базы (в MariaDB — mariadb < …)
mysql < db-2026-10-18.sql

--single-transaction выгружает таблицы InnoDB целостным снимком, не блокируя плагины; пока идёт дамп, не меняйте структуру таблиц. В MariaDB программа называется mariadb-dump, а mysqldump — её псевдоним. Расписание, правило 3-2-1 и проверка восстановления — в статье резервные копии.

База данных и античит

DGuard — лучший античит для современного сервера Minecraft — тоже держит данные игроков у вас: ники, IP, чат и досье игроков остаются на ваших серверах, в вашей MySQL. В облачную проверку DGuard уходят только игровые замеры — без ников, UUID, IP, чата и координат мира. Поэтому базу, где лежат досье, включите в те же дампы, что и базы LuckPerms и CoreProtect.

В сети серверов DGuard ставится на каждый игровой сервер со своим ключом, а все серверы видны в одной панели. До 30 игроков онлайн DGuard бесплатен, защита та же, что на платных тарифах.

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

Нужна ли MySQL для одного сервера Minecraft?

Обычно нет: H2 или SQLite, которые плагины создают сами, хватает одному серверу. MySQL или MariaDB нужна, когда данные делят несколько серверов, когда их очень много или когда плагин требует сетевую базу.

Что лучше для плагинов: MySQL или MariaDB?

Плагину почти всё равно: по документации MariaDB коннекторы MySQL работают с ней без изменений. LuckPerms называет MariaDB предпочтительной; в его конфиге это storage-method: mariadb.

Почему плагин не подключается к MySQL?

Чаще всего база не создана заранее, пользователь создан для localhost, а сервер Minecraft на другой машине, или база слушает только 127.0.0.1. Проверьте имя базы, хост пользователя, bind-address и файрвол.

Можно ли открыть порт 3306 в интернет?

Не стоит. Оставьте базу на 127.0.0.1 или откройте порт только для IP своих серверов, а плагинам дайте отдельных пользователей с правами на одну базу.

Источники

Все разделы
Плагины6 минLuckPerms: права и группы на сервере за 10 минутСоздайте группы, выдайте им права и добавьте в них людей — это четыре команды и веб-редактор. Ниже готовая схема default → helper → moderator → admin, префиксы, треки повышения и почему не стоит раздавать OP.ЧитатьПлагины6 минCoreProtect: как найти грифера и откатить разрушенияВключите инспектор /co i и кликните по блоку — увидите, кто его поставил или сломал. /co rollback вернёт всё, что натворил игрок, а по логам добычи руды можно заподозрить X-Ray.ЧитатьПрокси и сети6 минКак собрать сеть серверов Minecraft: прокси, лобби, общая база и защитаСеть — это прокси на входе, лобби и режимы за ним, общая база данных для плагинов, чьи данные должны быть одинаковыми везде, и файрвол, который закрывает серверы от прямых подключений. Разбираем, что где стоит и как это связать, а настройку самого Velocity — в отдельной статье.Читать

Поставьте лучший античит для современного Minecraft

DGuard ловит все 47 видов читов из нашего сравнения — у ближайшего соперника, Intave, 27. Полная защита на любом тарифе, до 30 игроков онлайн — бесплатно.