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

This lists the 156 tables:

discourse=# \dt

But basic queries return nothing:

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

This is a working site, so I’m sure there is data. What am I doing wrong?

stesso problema di Mark sopra

  1. Se possibile, usa il plugin data-explorer: include controlli di sicurezza aggiuntivi e un esploratore di schemi.
  2. Devi terminare i comandi nella console psql con un punto e virgola ;.

Puoi spiegare questo processo? Sono un principiante sui container e vorrei iniziare a sperimentare con il mio database Postgres invece di avere il container come una grande scatola nera per me :slight_smile:

Eccolo qui, proprio per te @Divert:

Assumendo che tu sia in modalità single container OOTB nella configurazione standard supportata:

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

Ora, se tutto funziona correttamente, sei nel database come utente discourse, connesso al database discourse, pronto per eseguire comandi PostgreSQL e SQL.

Quindi, se vuoi elencare tutte le tabelle nel database, puoi fare:

\dt

Se vuoi elencare tutte le tabelle che contengono la parola “setting”, puoi fare:

\dt *setting* 

Se trovi una tabella di interesse, ad esempio la tabella users, puoi esaminarne la struttura in questo modo:

\d users

Se desideri (ad esempio, e non è un esempio efficiente) esaminare i primi 10 utenti (ordinati per id in ordine decrescente, solo 10), puoi semplicemente fare:

SELECT * FROM users ORDER BY id desc LIMIT 10;

Comunque, hai capito l’idea. Se sei bravo con SQL, è una passeggiata.

Tutti qui ti consiglieranno di fare esperimenti su un ambiente di staging (dove se rompi qualcosa puoi semplicemente ricostruire e ricominciare da capo) e divertirti!

Non fare esperimenti su un sistema di produzione con utenti reali finché non ti senti molto a tuo agio con la tecnologia (magari hai almeno padroneggiato le basi) e fai sempre backup completi prima :slight_smile:

Divertiti @Divert


Nota: Questo tipo di “giocare” o “autoapprendimento” nel database non è argomento del supporto su meta, quindi sei fondamentalmente da solo. Buon divertimento!

@neounix Grazie mille per questa risposta, sei andato davvero oltre e lo apprezzo davvero. :smile:

C’è un modo per connettersi al database di Discourse (installazione self-hosted su Docker) utilizzando un client SQL (come PSequel per Mac)?

Oltre a usare Docker, che non conosco (e non voglio corrompere il DB), ci sono comandi SQL che potrei eseguire tramite il plugin Data Explorer per mostrare i nomi dei database a cui posso accedere in Discourse?