데이터베이스에 액세스 중

GUI(Psequel)를 통해 데이터베이스에 접근하려고 합니다.

컨테이너의 포트 설정을 다음과 같이 포워딩했습니다:

app.yml:

expose:
  <기본 정의>
  - "15432:5432" # PostgreSQL

또한 비밀번호를 다음과 같이 변경했습니다:

./launcher enter app
su - postgres
psql
ALTER ROLE postgres WITH PASSWORD '<your password>';

그러나 데이터베이스에 접근할 수 없습니다. 조언을 주실 수 있을까요?

데이터베이스의 정적 스냅샷만 필요하시다면 https://<site>/admin/backups에서 백업 파일을 다운로드하세요. 해당 파일은 *.tar.gz 형식이며, 압축을 풀면 *.sql 파일이 됩니다. 다른 컴퓨터(노트북도 괜찮습니다)에 PostgreSQL 데이터베이스를 생성한 후, 해당 *.sql 파일을 가져오면 됩니다.

이제 PostgreSQL 데이터베이스에 연결할 수 있는 어떤 수단으로든 원하는 대로 데이터에 접근할 수 있습니다.

저는 위 방법과 함께 ODBC를 통해 PostgreSQL의 Discourse 데이터베이스에 접근하고 있습니다.

도움이 되셨길 바랍니다.

네, 좋은 아이디어네요.
사실 제가 직접 해결했습니다. 컨테이너에서도 포트 5432로 실행됩니다.
다음처럼 작성해야 합니다:
expose:
<기본 정의>

  • “5432:5432” # PostgreSQL

감사합니다

안녕하세요,

다음 단계를 통해 pgadmin으로 postgres 데이터베이스에 접근할 수 있습니다:

  • app.yml 파일에서 포트 노출(expose port) 코드를 제거하고 앱을 다시 빌드하세요.
  • 서버 관리 포털(예: Digital Ocean, AWS 등)에 접속하여 5432 포트를 열기 위한 방화벽 규칙을 생성하세요.
  • pgadmin의 SSH 탭을 사용하여 서버 주소와 자격 증명으로 서버에 로그인하세요.

이 방법이 작동하는지 알려주시면 감사하겠습니다.

감사합니다,
Kimberly

@EricGT 그런 생각을 해본 적이 없네요! 감사합니다!! :slight_smile:

안녕하세요!

한 가지 확인하고 싶은 것이 있어 문의드립니다. dump.sql 파일을 PostgreSQL 데이터베이스로 내보내면 테이블이 비어 있는 상태가 됩니다. 그 이유는 명확하지 않네요. 백업 파일을 다운로드한 후 제가 수행하는 단계는 다음과 같습니다:

  1. pgAdmin 열기
  2. 새 데이터베이스 생성
  3. 쿼리 도구 열기
  4. 쿼리 도구에서 '열기’를 사용하여 dump.sql 파일 선택
  5. 덤프 스크립트 실행

모든 작업이 성공적으로 완료되었다고 표시되지만, 테이블에서 '데이터 보기’를 선택하면 테이블이 비어 있습니다.

추가로, 인스턴스 관리 방식 때문인 것 같지만 users 테이블도 포함되지 않은 것 같습니다. 누가 무엇을 했는지 파악하려면 이 테이블이 필요합니다.

무엇을 놓친 것이 있을까요? 감사합니다!

dump.sql의 크기는 얼마인가요? 적정 크기여야 합니다(최소 몇 MB는 되어야 합니다). 파일 내용을 확인해 보실 수 있나요? 예를 들어 다음과 같이:

$ zgrep -i "CREATE TABLE public.users" dump.sql.gz
#출력 결과는 다음과 같아야 합니다
> CREATE TABLE public.users (

이 내용이 보이지 않으면 덤프가 잘못 생성된 것입니다.

또한 덤프를 내보내는 과정이나 콘솔 출력을 여기에 공유해 주시면 문제를 더 잘 파악할 수 있습니다.

정말 감사합니다! :slight_smile:

6.34 GB 입니다!

이미지는 터미널에서 "dump.sql"이라는 파일 이름을 사용하여 CREATE TABLE 문을 표현하려는 SQL 코드 한 줄을 보여줍니다. (AI 캡션)

덤프를 다운로드하기 위해 @EricGT 님이 위에서 제안한 단계를 따랐습니다:

그 후 다음 단계를 따랐습니다:

그리고 나서 데이터를 보려고 하면 다음과 같이 표시됩니다:

확인해 보려고 방금 다시 수행해 보았습니다.

  1. 관리자 페이지 https://<site>/admin/backup에서 다운로드를 요청하고 단계를 따랐습니다. 이메일 인증 및 파일 다운로드를 포함하여 여러 단계가 있었습니다.
  2. 다운로드된 파일은 gz 파일이었습니다. 예를 들어 abc-2025-01-23-095947-v20250122131007.sql.gz와 같습니다. Windows에서 7-zip을 사용하여 파일을 압축 해제했는데, 끝에 .gz가 없는 동일한 이름의 디렉터리가 생성되었습니다.
C:\Users\Groot\Downloads>dir *.sql.gz
01/23/2025  05:04 AM       407,213,170 abc-2025-01-23-095947-v20250122131007.sql.gz

C:\Users\Groot\Downloads>dir *.sql

01/23/2025  05:04 AM    <DIR>          abc-2025-01-23-095947-v20250122131007.sql
  1. SQL 파일이 존재하는지 확인하기 위해 해당 SQL 파일이 있는 디렉터리로 이동한 Windows 명령 프롬프트를 열었습니다.
C:\Users\Groot\Downloads\abc-2025-01-23-095947-v20250122131007.sql>dir

01/23/2025  05:04 AM     1,572,346,154 abc-2025-01-23-095947-v20250122131007.sql
               1 File(s)  1,572,346,154 bytes
  1. 동일한 Windows 명령 프롬프트에서 type 명령어를 사용하여 SQL 파일의 시작 부분을 나열했습니다.

type <file> /a | more

C:\Users\Groot\Downloads\abc-2025-01-23-095947-v20250122131007.sql>type "abc-2025-01-23-095947-v20250122131007.sql" /a | more

abc-2025-01-23-095947-v20250122131007.sql


--
-- PostgreSQL database dump
--

-- Dumped from database version 15.8 (Debian 15.8-1.pgdg110+1)
-- Dumped by pg_dump version 15.10 (Debian 15.10-1.pgdg120+1)

-- Started on 2025-01-23 09:59:47 UTC

SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';

이제 PGAdmin을 사용하여 SQL 파일로 데이터를 가져올 수 있기를 바랍니다.


참고

약 5년 전에 이 문제에 대해 게시했을 당시에는 다운로드된 파일 형식이 tar.gz였으나, 지금은 sql.gz입니다. 유일한 차이점은 이제 압축 해제 단계가 하나 줄어든다는 것입니다.

안녕하세요 @EricGT

도와주셔서 정말 감사합니다! 모든 단계를 그대로 따라갔습니다 (제 파일이 여전히 tar.gz 형식이라 한 단계 더 추가했습니다). sql 파일에서도 동일한 결과를 얻었습니다:

--
-- PostgreSQL database dump
--
.........
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';

그러나 문제는 PgAdmin을 사용하여 데이터를 가져올 때 모든 테이블이 비어 있고, Users 테이블은 아예 없다는 것입니다.

PgAdmin에 대해서는 도움을 드릴 수 없습니다. 저는 PgAdmin을 사용하지 않으며, 시험해보려면 설치해야 합니다. PgAdmin 설치는 제가 취하고 싶은 단계가 아닙니다.

내보낸 Discourse 데이터베이스에 접근했던 한 번의 경험에서는 PostgreSQL, odbc-postgresql을 설치하고 여기에 언급된 대로 iusql을 사용했습니다.

도와주셔서 정말 감사합니다! 정말 고맙습니다. 나중에 보니, 저는 최신 버전의 PostgreSQL을 사용하려고 했었는데 dump.sql 파일은 이전 버전에서 나온 것이었습니다. 이 사실을 안내해 주신 가이드를 따라가면서 알게 되었습니다. 감사합니다!