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?

3 « J'aime »

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.

5 « J'aime »

Hi, Docker enter, but what’s next?

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

1 « J'aime »

postgres runs under the postgres user, per:

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

4 « J'aime »

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.’

25 « J'aime »

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?

1 « J'aime »

same problem as mark above

  1. Use the data-explorer plugin if at all possible - it comes with some bonus safety checks and a schema explorer.
  2. You need to terminate commands in the psql console with a ; semicolon.
8 « J'aime »

Pourriez-vous s’il vous plaît expliquer ce processus ? Je suis un débutant en matière de conteneurs et j’aimerais beaucoup commencer à explorer ma base de données PostgreSQL plutôt que de laisser le conteneur être une grande boîte noire pour moi :slight_smile:

1 « J'aime »

Voilà, spécialement pour vous @Divert :

En supposant que vous soyez en mode conteneur unique OOTB dans la configuration standard prise en charge :

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

Si tout se déroule correctement, vous êtes maintenant connecté à la base de données en tant qu’utilisateur discourse, prêt à exécuter des commandes PostgreSQL et SQL.

Ensuite, si vous souhaitez lister toutes les tables de la base de données, vous pouvez utiliser :

\dt

Si vous voulez lister toutes les tables contenant le mot « setting », vous pouvez faire :

\dt *setting*

Si vous trouvez une table qui vous intéresse, par exemple la table users, vous pouvez examiner sa structure comme suit :

\d users

Si vous souhaitez (par exemple, et ce n’est pas un exemple très efficace) examiner les 10 premiers utilisateurs (triés par id décroissant, uniquement 10), vous pouvez simplement faire :

SELECT * FROM users ORDER BY id DESC LIMIT 10;

En tout cas, vous avez compris l’idée. Si vous êtes à l’aise avec SQL, c’est un jeu d’enfant.

Tout le monde ici vous recommandera de faire vos essais sur un environnement de staging (où, si vous cassez quelque chose, vous pouvez simplement reconstruire et recommencer) et de vous amuser !

Ne faites pas d’expérimentations sur un système de production avec de vrais utilisateurs tant que vous n’êtes pas très à l’aise avec la technologie (peut-être avez-vous au moins maîtrisé les bases) et faites toujours des sauvegardes complètes au préalable :slight_smile:

Amusez-vous bien @Divert


Note : Ce genre de « bidouillage » ou d’« apprentissage par soi-même » dans la base de données n’est pas du ressort du support sur meta, donc vous êtes en quelque sorte seul. Amusez-vous bien !

18 « J'aime »

@neounix Merci beaucoup pour cette réponse, tu as vraiment fait l’effort supplémentaire et je l’apprécie vraiment. :smile:

6 « J'aime »

Existe-t-il un moyen de se connecter à la base de données Discourse (installation auto-hébergée via Docker) en utilisant un client SQL (comme PSequel pour Mac) ?

Outre l’utilisation de Docker, que je ne connais pas (et je ne veux pas corrompre la base de données), existe-t-il des commandes SQL que je pourrais exécuter via le plugin Data Explorer pour afficher les noms des bases de données auxquelles je peux accéder dans Discourse ?