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 Me gusta

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 Me gusta

Hi, Docker enter, but what’s next?

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

1 me gusta

postgres runs under the postgres user, per:

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

4 Me gusta

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 Me gusta

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 me gusta

mismo problema que el de Mark arriba

  1. Utiliza el plugin data-explorer si es posible: incluye algunas comprobaciones de seguridad adicionales y un explorador de esquemas.
  2. Debes finalizar los comandos en la consola psql con un ; punto y coma.
8 Me gusta

¿Podrías explicar este proceso? Soy nuevo en contenedores y me encantaría empezar a interactuar con mi base de datos Postgres en lugar de tener el contenedor como una gran caja negra para mí :slight_smile:

1 me gusta

Aquí tienes, especialmente para ti @Divert:

Asumiendo que estás en el modo de contenedor único OOTB en la configuración estándar soportada:

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

Ahora, si todo estaba funcionando correctamente, estás en la base de datos como el usuario discourse, conectado a la base de datos discourse, listo para ejecutar comandos de PostgreSQL y SQL.

Luego, si quieres listar todas las tablas en la base de datos, puedes:

\dt

Si quieres listar todas las tablas que contengan la palabra “setting”, entonces puedes:

\dt *setting* 

Si encuentras una tabla de interés, por ejemplo la tabla users, puedes examinar su estructura de la siguiente manera:

\d users

Si deseas (por ejemplo, y no es un ejemplo eficiente) examinar los primeros 10 usuarios (ordenados por id descendente, solo 10); puedes simplemente:

SELECT * FROM users ORDER BY id desc LIMIT 10;

De todos modos, ya captas la idea. Si eres bueno en SQL, es pan comido.

Todos aquí te recomendarán que experimentes en un entorno de staging (donde, si rompes algo, puedes simplemente reconstruir y empezar de nuevo) ¡y que te diviertas!

No experimentes en un sistema de producción con usuarios reales hasta que te sientas muy cómodo con la tecnología (quizás hayas dominado al menos lo básico) y siempre haz copias de seguridad completas primero :slight_smile:

¡Que te diviertas @Divert!


Nota: Este tipo de “experimentación” o “autoaprendizaje” en la base de datos no es el tema de support en meta, así que básicamente estás por tu cuenta. ¡Disfruta!

18 Me gusta

@neounix Muchas gracias por esta respuesta, te fuiste la milla extra y lo aprecio mucho. :smile:

6 Me gusta

¿Hay alguna manera de conectarse a la base de datos de Discourse (instalación autoalojada en Docker) usando algún cliente SQL (como PSequel para Mac)?

Aparte de usar Docker, con el que no estoy familiarizado (y no quiero corromper la base de datos), ¿hay comandos SQL que pueda ejecutar a través del plugin Data Explorer para mostrar los nombres de las bases de datos a las que puedo acceder en Discourse?