Коротко: на одном сервере оставьте хранилище по умолчанию — H2, SQLite или файлы. Сеть серверов, общие права, баны и синхронизация инвентарей требуют сетевой базы: MySQL, MariaDB или PostgreSQL. Каждому плагину — своя база и свой пользователь с правами только на неё, сервер базы слушает только 127.0.0.1 или закрыт файрволом, а резервная копия делается mysqldump вместе с миром.
Когда хватает файлов, а когда нужна MySQL
| Хранилище | Примеры | Плюсы | Минусы |
|---|---|---|---|
| Текстовые файлы | YAML, JSON | Можно читать и править руками | Неудобны для массовых запросов, данные не поделить между серверами |
| Файловая база | H2, SQLite | Ничего настраивать не нужно, работает сразу | Один файл на одном сервере: данные не поделить между серверами |
| Сетевая база | MySQL, MariaDB, PostgreSQL | Общие данные для нескольких серверов, больше данных, одновременные запросы | Отдельный сервис, его надо ставить, защищать и копировать |
Документация 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 от администратора:
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
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
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 — все адресаРезервные копии базы
Базы плагинов лежат не в папке сервера, поэтому копия мира их не спасёт. Выгружайте их отдельно и по тому же расписанию:
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 своих серверов, а плагинам дайте отдельных пользователей с правами на одну базу.
Источники
- LuckPerms: типы хранилища
- LuckPerms: установка в сети
- LuckPerms: смена хранилища
- LuckPerms: стандартный config.yml
- CoreProtect: настройка и базы данных
- CoreProtect 24.1: ключи конфига (исходный код)
- HuskSync: требования
- MySQL: GRANT
- MySQL: bind_address
- MariaDB: совместимость с MySQL
- MariaDB: удалённые подключения и bind-address
- MariaDB: mariadb-dump
- MySQL: файлы настроек (~/.my.cnf)
- Linux: ss(8)
- DGuard — лучший античит для современного сервера Minecraft: сравнение проверок с GrimAC, Vulcan, Polar, Intave и Matrix
- DGuard: установка, требования и решение проблем
- DGuard: поддерживаемые версии Paper и Leaf