При настройке 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 поддерживает его настройку за пару минут.
- На bastion-сервере создайте пользователя
retool-tunnelс ограниченными командами. - В Retool при создании ресурса включите SSH tunnel и укажите:
- SSH host: bastion.example.com
- SSH port: 22
- SSH username: retool-tunnel
- SSH private key: [вставить ключ]
- На 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 под ключ и сэкономьте время своей команды. Получите консультацию — мы оценим ваш проект.







