Безопасное подключение PostgreSQL, MySQL и MongoDB в Retool

При настройке Retool для внутренних инструментов часто возникают проблемы: неправильные права доступа, небезопасные подключения, N+1 запросы, которые убивают производительность. Типичный кейс — разработчик даёт базе суперпользователя, а потом удивляется, почему данные утекли. Или подключает MongoDB

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Безопасное подключение PostgreSQL, MySQL и MongoDB в Retool
Простой
от 1 дня до 3 дней

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1422
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1288
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    984
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1250
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    988
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    1001

При настройке Retool для внутренних инструментов часто возникают проблемы: неправильные права доступа, небезопасные подключения, N+1 запросы, которые убивают производительность. Типичный кейс — разработчик даёт базе суперпользователя, а потом удивляется, почему данные утекли. Или подключает MongoDB без SSL, и трафик идёт в открытую. Недавно клиент потерял 2 дня на развёртывание админки из-за некорректных прав — мы решили проблему за 3 часа. Мы настраиваем подключения к базам данных (PostgreSQL, MySQL, MongoDB) с нуля: от создания отдельного пользователя до настройки SSH-туннеля. Ниже — типовые конфиги, best practices и реальные грабли, которые мы обходим.

Проблемы, которые решаем

N+1 запросы — одна из главных причин тормозов. Retool без кэширования может выполнять десятки запросов на отрисовку виджета. Например, список клиентов с их заказами: без джойнов получаем 1 запрос на клиента + N на заказы. Это увеличивает время загрузки на 500%. Решение — использовать параметризованные запросы с LEFT JOIN внутри одного вызова.

Небезопасные подключения — база с публичным IP, пароль суперпользователя в плейнтексте, отсутствие SSL. В одном проекте мы обнаружили, что к MongoDB можно было подключиться без пароля из любой точки мира. Пришлось срочно менять настройки.

Права доступа — часто дают слишком широкие роли. Из-за этого случайное удаление данных или SQL-инъекции. Мы всегда создаём пользователя с минимальными привилегиями.

Что такое N+1 запросы и как их избежать?

N+1 возникает, когда для каждого родительского объекта выполняется отдельный дочерний запрос. В Retool это особенно заметно на таблицах с лукапом. Оптимальный подход — один SQL-запрос с JOIN, агрегацией или с использованием выражений IN (). Например, вместо:

SELECT * FROM customers; -- 1 запрос -- для каждого customer выполняется: SELECT * FROM orders WHERE customer_id = $1; 

Используйте:

SELECT c.*, o.order_count FROM customers c LEFT JOIN ( SELECT customer_id, COUNT(*) as order_count FROM orders GROUP BY customer_id ) o ON c.id = o.customer_id; 

Типичная задержка из-за N+1 — 2-3 секунды на страницу. После оптимизации запрос выполняется за 50 мс.

Подключение PostgreSQL, MySQL и MongoDB

Retool поддерживает популярные БД. Рассмотрим подключение каждой. Важно: все соединения должны быть зашифрованы, а пользователи — с ограниченными правами.

PostgreSQL

Создайте ресурс в Retool: Resources → Create New → PostgreSQL. Укажите:

Host: db.production.example.com Port: 5432 Database name: app_production Database username: retool_readonly Password: **** SSL mode: require 

Пример SQL для создания пользователя с правами только на чтение:

Создание readonly-пользователя
CREATE USER retool_readonly WITH PASSWORD 'secure_password'; GRANT CONNECT ON DATABASE app_production TO retool_readonly; GRANT USAGE ON SCHEMA public TO retool_readonly; GRANT SELECT ON ALL TABLES IN SCHEMA public TO retool_readonly; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO retool_readonly; 

MySQL

Для MySQL также используйте отдельного readonly-пользователя. Обязательно включите SSL: Required и укажите charset utf8mb4. Порт по умолчанию 3306.

MongoDB

Строка подключения: mongodb://user:pass@host:27017/db?ssl=true. В production используйте replica set с retryWrites=true. Порт по умолчанию 27017.

Параметр PostgreSQL MySQL MongoDB
Порт по умолчанию 5432 3306 27017
SSL mode require Required ssl=true
Пользователь отдельный readonly отдельный readonly отдельная роль

Как настроить SSH-туннель?

Если база данных не имеет публичного IP, используйте SSH-туннель. Retool поддерживает его настройку за пару минут.

  1. На bastion-сервере создайте пользователя retool-tunnel с ограниченными командами.
  2. В Retool при создании ресурса включите SSH tunnel и укажите:
    • SSH host: bastion.example.com
    • SSH port: 22
    • SSH username: retool-tunnel
    • SSH private key: [вставить ключ]
  3. На bastion-сервере ограничьте команды:
Match User retool-tunnel ForceCommand /bin/false PermitTunnel yes AllowTcpForwarding yes 

Параметризованные запросы против SQL-инъекций

Retool автоматически экранирует переменные в {{ }}. Используйте их всегда. Пример безопасного обновления:

UPDATE users SET status = {{ statusSelect.value }}, updated_at = NOW(), updated_by = {{ current_user.email }} WHERE id = {{ usersTable.selectedRow.data.id }} AND status != {{ statusSelect.value }} 

Никогда не конкатенируйте строки вручную — это прямой путь к инъекциям. Согласно Retool Documentation, параметризованные запросы — единственный безопасный способ.

Права доступа для Retool

Лучше создать отдельного пользователя только для чтения. Если нужна запись — дайте права только на конкретные таблицы. Пример для PostgreSQL:

GRANT SELECT, UPDATE ON users TO retool_ops; GRANT SELECT, INSERT, UPDATE ON orders TO retool_ops; 
Действие Роль Таблицы
Только чтение retool_readonly Все таблицы в схеме
Чтение и запись retool_ops Только users, orders

Настройка под ключ: что входит

Мы предоставляем полный цикл работ:

  • Анализ архитектуры и выбор оптимального стека
  • Создание пользователей БД с минимальными правами
  • Настройка SSH-туннеля и SSL
  • Конфигурация ресурсов в Retool
  • Написание первых 5–10 запросов и виджетов
  • Документация по подключению и безопасности
  • Обучение команды (1 час)
Этап Время
Анализ и проектирование 2–3 часа
Настройка инфраструктуры 1–2 часа
Конфигурация Retool 1 час
Тестирование и документирование 2 часа

Срок — от 1 дня. Стоимость рассчитывается индивидуально в зависимости от сложности.

Типичные ошибки при настройке

  • Неправильный хост: используйте приватный IP, если Retool и база в одной сети.
  • Пропущен firewall: проверьте, что IP Retool разрешён в security group.
  • Неверный порт: уточните порт у администратора БД.
  • Отсутствие SSL: всегда включайте SSL mode require или ssl=true.

Почему стоит доверить настройку нам?

У нас 5+ лет опыта работы с Retool и базами данных. Мы гарантируем безопасность и производительность. Настроили более 50 проектов. Retool в 5 раз быстрее самописных админок — вы экономите до 40% времени на разработку. Закажите настройку Retool под ключ и сэкономьте время своей команды. Получите консультацию — мы оценим ваш проект.