Подключиться к базе напрямую
Ваши данные лежат в отдельной базе PostgreSQL. Чтобы работать с ней своими инструментами — DBeaver, BI-системой, скриптом, — попросите у нас прямой доступ. Вы получите (разными каналами):
- файл ключа
<имя>_db_tunnel.ppkдля SSH-туннеля; - реквизиты базы: адрес вида
имя.db.goodwink.ru, базу, пользователя и пароль; порт —5432; - роль на выбор: «только чтение» (
<имя>_readonly— отчёты и BI, изменить через неё ничего нельзя) или «клиент» (<имя>_client— как SQL-редактор кабинета: правка строк таблиц источников и свои объекты).
Что видно в базе и что каждая роль может — Схемы и роли базы.
Как устроено подключение
Заголовок раздела «Как устроено подключение»База в интернет не открыта. Ваша программа соединяется по SSH-туннелю: туннель прокидывает подключение до вашей базы и больше никуда — ключ разрешает только этот проброс.
ваш компьютер сервер GoodWink ┌──────────────┐ SSH-туннель (шифр.) ┌──────────────────────────┐ │ DBeaver/psql │──── ключ .ppk ─────────▶│ имя.db.goodwink.ru │ │ → localhost │ порт 22 │ :5432 — только ваша база │ └──────────────┘ └──────────────────────────┘Общие параметры
Заголовок раздела «Общие параметры»| Параметр | Значение |
|---|---|
| SSH-хост и порт | 193.32.188.13, 22 |
| SSH-пользователь | из реквизитов, вида <имя>_tun |
| SSH-ключ | файл <имя>_db_tunnel.ppk, без парольной фразы |
| Хост и порт базы (через туннель) | имя.db.goodwink.ru, 5432 |
| База данных | из реквизитов, вида <имя> |
| Пользователь и пароль базы | из реквизитов: <имя>_readonly или <имя>_client |
DBeaver — проще всего
Заголовок раздела «DBeaver — проще всего»DBeaver поднимает туннель сам.
- Новое соединение → PostgreSQL.
- Вкладка SSH → «Use SSH Tunnel»: хост
193.32.188.13, порт22, пользователь<имя>_tun, Authentication Method — Public key, Private key — файл<имя>_db_tunnel.ppk, Passphrase пусто. - Вкладка Main: хост
имя.db.goodwink.ru, порт5432, база, пользователь и пароль из реквизитов. - «Тест соединения» → «Готово».
Так же подключаются DataGrip, pgAdmin и TablePlus — у всех есть вкладка SSH-туннеля с теми же параметрами.
psql в командной строке (Linux, macOS, WSL)
Заголовок раздела «psql в командной строке (Linux, macOS, WSL)»Нужен ключ в формате OpenSSH — попросите его у нас или сконвертируйте:
puttygen <имя>_db_tunnel.ppk -O private-openssh -o <имя>_db_tunnel (в
PuTTYgen — Conversions → Export OpenSSH key).
В одном окне откройте туннель и оставьте его открытым:
ssh -i <имя>_db_tunnel -N -L 15432:имя.db.goodwink.ru:5432 <имя>_tun@193.32.188.13В другом — подключитесь через локальный порт 15432:
psql "postgresql://<имя>_readonly:ПАРОЛЬ@localhost:15432/<имя>"Проверка: \dn — схемы, \dt raw.* и \dt sources.* — таблицы в них.
Windows без DBeaver (PuTTY и любой клиент)
Заголовок раздела «Windows без DBeaver (PuTTY и любой клиент)»- PuTTY → Session: хост
193.32.188.13, порт22. - Connection → SSH → Auth → Credentials: файл
<имя>_db_tunnel.ppk. - Connection → SSH → Tunnels: Source port
15432, Destinationимя.db.goodwink.ru:5432, Add. Open, войдите как<имя>_tun. - Пока окно PuTTY открыто, подключайте любой клиент к
localhost:15432с базой, пользователем и паролем из реквизитов.
Свой скрипт на Python
Заголовок раздела «Свой скрипт на Python»Пакеты: pip install sshtunnel psycopg2-binary, ключ — в формате OpenSSH.
from sshtunnel import SSHTunnelForwarderimport psycopg2
with SSHTunnelForwarder( ("193.32.188.13", 22), ssh_username="<имя>_tun", ssh_pkey="<имя>_db_tunnel", remote_bind_address=("имя.db.goodwink.ru", 5432)) as t: conn = psycopg2.connect( host="localhost", port=t.local_bind_port, dbname="<имя>", user="<имя>_readonly", password="ПАРОЛЬ") cur = conn.cursor() cur.execute("SELECT table_schema, table_name FROM information_schema.tables" " WHERE table_schema IN ('raw', 'sources') ORDER BY 1, 2") for row in cur.fetchall(): print(row)На любом другом языке — так же: сначала SSH-туннель, затем обычный драйвер PostgreSQL на локальный порт.
Excel и Power BI
Заголовок раздела «Excel и Power BI»Без настройки — кнопка «Выгрузить CSV» на экране любой таблицы
(Выгрузить CSV). Для живого подключения поднимите
туннель через PuTTY, поставьте ODBC-драйвер PostgreSQL и в Excel → «Данные →
Из других источников → ODBC» укажите сервер localhost, порт 15432, базу
и пользователя <имя>_readonly.
Если что-то не так
Заголовок раздела «Если что-то не так»- Ошибка при
INSERT,UPDATEилиDELETEу роли «только чтение» — так задумано. У роли «клиент» сырые данные только читаются, а в таблицу источника нельзя добавить строку и нельзя менять служебные столбцы. statement timeoutилиtemp_file_limit— запрос упёрся в пределы (Пределы и сроки): сузьте выборку или посчитайте итог заранее материализованным представлением.- «database … does not exist» или нет прав на другую базу — вам видна только ваша база.
- Ошибки по-английски — так база отвечает по умолчанию. По-русски — для
сеанса:
set lc_messages = 'ru_RU.UTF-8';(в DBeaver — запросом при подключении). Язык ошибок в самом кабинете — в «Настройках»: Язык сообщений базы. - Не подключается вообще — проверьте, что туннель действительно запущен
и что в клиенте базы хост —
localhost(при PuTTY и psql) илиимя.db.goodwink.ru(во вкладке Main у DBeaver).
Безопасность
Заголовок раздела «Безопасность»Ключ — как пароль: храните его в надёжном месте и не передавайте третьим лицам. Ключ утёк или доступ больше не нужен — напишите нам, отзовём сразу.