railway에 호스팅된 n8n 서버의 postgres 디비는 다양한 정보를 가지고 있습니다. 이번 글에서는 로컬 노트북 DBevaer에서 postrgres 를 연결하는 방법을 작성합니다.


1. 기본 개념

  • Postgres는 n8n의 데이터베이스로 self-hosting을 하는 경우 외부에 접속 권한이 열려있지 않음
  • 이를 해결하기 위해서 Public Netwokring 활성화 필요
  • Database 접속은 TCP 적용 필요 & SSL 설정 필요

 

2. 연결 정보 획득

  • Postgres 정보 클릭 - Setting - Networking - Public Networking 활성화
  • TCP 활성화

참고: Public HTTP Domain은 웹 서비스용 도메인이기 때문에 DB 접속 도메인은 따로 있음

 

  • Variable 탭에서 기본 정보 획득
    • POSTGRES_DB: DB정보, 일반적으로 railway
    • POSTGRES_USER: 유저 정보, 일반적으로 railway
    • POSTGRES_PASSWORD: 비밀번호

 

2. DBeaver 설정

  • Connection Settings - Main
    • Host: 위의 TCP 도메인
    • PORT: TCP 도메인의 설정된 PORT
    • Database: railway
    • Username: railway
    • Password: POSTGRES_PASSWORD 값

 

  • Connection Settings - Driver properties 
    • ssl: true
    • sslmode: require

3. 접속 완료 및 조회

  • 주요 데이터베이스별 정보(Gemini 생성)
1. execution_entity (가장 중요)
역할: 워크플로우가 한 번 실행될 때마다 모든 기록이 저장되는 곳입니다.
저장 내용: 실행된 JSON 데이터 전체, 실행 성공/실패 여부, 걸린 시간.
특징: 용량을 제일 많이 차지합니다. DB가 무거워졌다면 99% 이 테이블 때문입니다.

2. workflow_entity
역할: 우리가 화면에서 만든 워크플로우 '설계도'가 저장되는 곳입니다.
저장 내용: 워크플로우 이름, 노드들의 배치 정보, 노드 안의 설정값(JSON 형태).
특징: 이 테이블을 백업하면 워크플로우 전체를 복구할 수 있습니다.

3. credentials_entity
역할: 구글 시트, 슬랙, 노션 등 외부 서비스 연결을 위한 인증 정보입니다.
저장 내용: API Key, OAuth 토큰, 비밀번호.
특징: 보안을 위해 평문이 아니라 암호화된 문자열로 저장됩니다.

4. user
역할: n8n에 로그인하는 사용자 정보입니다.
저장 내용: 이메일 주소, 암호화된 비밀번호, 이름.

5. tag_entity
역할: 워크플로우 관리를 위해 붙이는 '태그' 정보입니다.
저장 내용: 태그 이름 (예: Production, Test 등).
  • 특정 사용자의 워크플로우 생성 히스토리 조회
SELECT
    u.id as user_id,
    u.email,
    w.id as workflow_id,
    w.name as workflow_name,
    p.name as project_name,
    sw.role as workflow_role
FROM "user" u
JOIN project_relation pr ON u.id = pr."userId"
JOIN project p ON pr."projectId" = p.id
JOIN shared_workflow sw ON p.id = sw."projectId"
JOIN workflow_entity w ON sw."workflowId" = w.id
WHERE u.email = '이메일'
;

 

+ Recent posts