How to access the discourse database?

Hi all,

This is probably a stupid question but how can I access the database?
Is there something equivalent to phpadmin (or another GUI) that I can use to view and edit the database of discourse? If not, then what is the best way to access/view/edit it?

Install the Data Explorer Plugin and have at it.

If you want to do postgres command line stuff, you’ll need to enter the container to do that using the Docker enter command.

Hi, Docker enter, but what’s next?

I tried psql but got psql: FATAL: role "root" does not exist

postgres runs under the postgres user, per:

You want to sudo postgres psql discourse to hit the right user and database…

I see , thank you! @sam

In case anyone else is confused the actual command you need to run inside the container is:

sudo -u postgres psql discourse

i.e. ‘Run psql discourse as the postgres user.’

sudo -u postgres psql discourse

이 명령은 156개의 테이블을 나열합니다:

discourse=# \dt

하지만 기본 쿼리는 아무것도 반환하지 않습니다:

discourse=# select * from users limit 1
discourse-#

이 사이트는 정상적으로 작동하고 있으므로 데이터가 있는 것으로 확신합니다. 제가 무엇을 잘못하고 있나요?

위 마크가 말한 문제와 동일합니다

  1. 가능한 경우 data-explorer 플러그인을 사용하세요. 이 플러그인에는 몇 가지 보너스 안전성 검사 기능과 스키마 탐색기가 포함되어 있습니다.
  2. psql 콘솔에서 명령을 종료하려면 ; 세미콜론을 입력해야 합니다.

이 과정을 설명해 주실 수 있나요? 컨테이너 초보자인데, 컨테이너가 나에게 큰 블랙박스처럼 느껴지는 대신 포스트그레SQL 데이터베이스를 직접 다루어 보고 싶습니다 :slight_smile:

@Divert 님을 위해 준비했습니다:

표준 지원 설정에서 OOTB(Out-Of-The-Box) 단일 컨테이너 모드에 있다고 가정하면:

cd /var/discourse
./launcher enter app
su discourse
psql discourse

모든 것이 정상적으로 작동했다면, 이제 discourse 사용자로 discourse DB에 연결되어 PostgreSQL 및 SQL 명령을 실행할 준비가 된 상태입니다.

그런 다음, DB의 모든 테이블을 나열하려면 다음을 사용할 수 있습니다:

\dt

"setting"이라는 단어가 포함된 모든 테이블을 나열하려면 다음을 사용할 수 있습니다:

\dt *setting* 

관심 있는 테이블(예: users 테이블)을 찾았다면, 다음과 같이 테이블 구조를 살펴볼 수 있습니다:

\d users

원한다면 (예를 들어, 효율적인 예는 아니지만) 첫 10명의 사용자(id 내림차순 정렬, 10개만)를 살펴보고 싶다면 다음을 사용할 수 있습니다:

SELECT * FROM users ORDER BY id desc LIMIT 10;

어쨌든, 개념은 이해하셨을 것입니다. SQL에 능숙하다면 정말 쉬운 일이죠.

여기 있는 모든 분은 스테이징 환경(문제가 생겨도 재구성하고 처음부터 다시 시작할 수 있는 환경)에서 연습해 보고 즐기라고 권합니다.

기술에 대해 매우 익숙해지기 전(최소한 기본기를 마스터하기 전)에는 실제 사용자가 있는 프로덕션 시스템에서 연습하지 마세요. 그리고 항상 먼저 전체 백업을 만들어 두세요 :slight_smile:

즐기세요, @Divert


참고: DB에서 이런 식의 "연습"이나 "자기 학습"은 meta의 support 주제가 아니므로, 기본적으로 혼자서 진행해야 합니다. 즐기세요!

@neounix 이 답변에 정말 감사드립니다. 정말 많은 노력을 기울여 주셨고, 진심으로 감사드립니다. :smile:

Discourse DB(도커 셀프호스트 설치)에 SQL 클라이언트(예: Mac용 PSequel)로 연결할 수 있는 방법이 있을까요?

Docker는 제가 익숙하지 않아서(그리고 DB를 손상시키고 싶지도 않아서) 사용하지 않는다면, Discourse에서 접근할 수 있는 데이터베이스 이름을 표시하기 위해 Data Explorer 플러그인을 통해 실행할 수 있는 SQL 명령이 있을까요?