Как подключить MySQL к боту
Добавьте отдельную базу к новому или работающему боту, настройте TLS и проверьте соединение запросом SELECT 1 без вывода пароля.
MySQL необязателен. Если бот не использует отдельную базу, оставьте «Без отдельной базы». SQLite хранится на диске бота и переживает обычный перезапуск. Для MySQL нужен подходящий драйвер и настройка подключения в коде.
Условия отдельной базы
| Тариф | Стоимость | Диск целиком | Память | Соединения |
|---|---|---|---|---|
| MySQL · 1 ГиБ | 49 ₽ / 30 дней | 1 ГиБ | 256 МиБ | до 10 |
| MySQL · 3 ГиБ | 99 ₽ / 30 дней | 3 ГиБ | 384 МиБ | до 20 |
Это MySQL-совместимая MariaDB 11.4 в Амстердаме, до 0,5 CPU на базу. Диск включает системные файлы и служебные данные; свободного места для таблиц меньше указанного объёма. Оплата базы отдельная от почасовой оплаты бота. Списание при заказе, 30 дней начинаются с готовности. Продление вручную. По окончании срока подключение приостанавливается. Удаление сервера бота само по себе не удаляет базу.
- Заказ или проект → Базы данных
Выберите базу при заказе или добавьте позже
Проверьте итог: сервер и база оплачиваются отдельно. Для существующего проекта нажмите «Создать базу». Если баланса не хватает, пополните его и повторите заказ. При зависшем ответе не создавайте новый заказ: повтор текущей операции защищён от второго списания.
- Базы данных
Дождитесь готовности
«В очереди» и «Создаётся» ещё не означают, что можно подключаться. После готовности появятся адрес, порт, база и логин. Пароль откройте отдельной кнопкой. При ошибке создания панель сначала подтверждает освобождение ресурсов, затем возвращает стоимость на исходный баланс; после возврата можно оформить новый заказ.
- Код бота
Подключите драйвер и TLS
Первая созданная неудалённая база проекта автоматически передаётся боту после перезапуска через VOLN_DB_HOST, VOLN_DB_PORT, VOLN_DB_NAME, VOLN_DB_USER, VOLN_DB_PASSWORD и VOLN_DB_SSL. Она должна быть в состоянии «Работает». Код должен читать эти переменные. Остальные базы подключаются вручную. Скопированный из панели .env использует имена DB_*: его нужно отдельно загрузить в окружение приложения или прочитать библиотекой dotenv.
- Консоль приложения
Выполните SELECT 1
Примеры ниже печатают только успешный результат или короткое сообщение об ошибке. Не выводите пароль, объект настроек, строку подключения и полный объект ошибки. Из внешнего SQL-клиента используйте адрес и порт из панели, TLS и проверку сертификата и имени хоста. Пароль вводите в защищённое поле клиента, а не в аргументы команды.
Python: проверка через PyMySQL
Добавьте PyMySQL в requirements.txt с выбранной проверенной версией. Сохраните пример как check_db.py и временно выберите его файлом запуска. После строки «MySQL: подключение успешно» верните настоящий файл бота и перезапустите сервер. Завершение этого короткого проверочного скрипта ожидаемо.
Node.js: проверка через mysql2
Добавьте mysql2 в dependencies, обновите lockfile локально и загрузите оба файла. Сохраните пример как check-db.mjs. После проверки верните фактический файл запуска бота. Для TypeScript сначала выполните сборку на своём компьютере.
После подключения
- Успешный SELECT 1 подтверждает соединение с базой, но не правильность запросов и схемы вашего приложения. Не превышайте лимит соединений: используйте небольшой пул и закрывайте неиспользуемые подключения.
- Telegram: отправьте своему боту сообщение и дождитесь ответа. Discord: проверьте приглашение, права, intents и ответ на команду. Отметка пользователя о полученном ответе не является независимой проверкой платформы.
- Обычный перезапуск сохраняет данные. Копии создаются ежедневно на отдельном сервере во Франции и доступны 7 дней. Ручное копирование и восстановление суммарно доступны дважды в сутки UTC, не чаще раза в час.
- Восстановление через панель заменяет текущие данные этой базы; перед ним создаётся защитная копия. Восстановление в другую базу — отдельная операторская проверка, кнопки клонирования в панели пока нет.