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 بفاصلة منقوطة ;.

هل يمكنك شرح هذه العملية؟ أنا مبتدئ في مجال الحاويات، وأود أن أبدأ في تجربة قاعدة بيانات PostgreSQL الخاصة بي بدلاً من أن تكون الحاوية بالنسبة لي صندوقًا أسود كبيرًا :slight_smile:

إليك ما طلبته، خصيصًا لك @Divert :

بافتراض أنك تعمل في وضع الحاوية المفردة الافتراضي (OOTB) ضمن الإعداد القياسي المدعوم:

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

الآن، إذا كان كل شيء يعمل بشكل صحيح، فأنت داخل قاعدة البيانات كمستخدم discourse ومتصل بقاعدة بيانات discourse وجاهز لإصدار أوامر PostgreSQL و SQL.

ثم، إذا أردت سرد جميع الجداول في قاعدة البيانات، يمكنك استخدام الأمر التالي:

\dt

أما إذا أردت سرد جميع الجداول التي تحتوي على كلمة “setting”، يمكنك استخدام:

\dt *setting* 

إذا وجدت جدولًا يثير اهتمامك، مثل جدول المستخدمين، يمكنك فحص هيكل الجدول كالتالي:

\d users

إذا رغبت (على سبيل المثال، وليس هذا مثالًا فعالًا) في فحص أول 10 مستخدمين (مرتبة حسب المعرف تنازليًا، فقط 10)، يمكنك ببساطة استخدام:

SELECT * FROM users ORDER BY id desc LIMIT 10;

بشكل عام، لقد فهمت الفكرة. إذا كنت جيدًا في SQL، فإن الأمر سيكون سهلًا مثل كعكة.

سيوصي الجميع هنا بالتجربة على بيئة تجريبية (حيث إذا كسرت شيئًا يمكنك ببساطة إعادة البناء والبدء من جديد) واستمتع!

لا تجرب على نظام إنتاجي به مستخدمون حقيقيون إلا إذا كنت مرتاحًا جدًا مع هذه التقنية (ربما تكون قد أتقنت الأساسيات على الأقل)، ودائمًا قم بنسخ احتياطي كامل أولاً :slight_smile:

استمتع @Divert


ملاحظة: هذا النوع من “التجربة” أو “التعلم الذاتي” في قاعدة البيانات ليس موضوعًا للدعم في support في meta، لذا فأنت في الأساس وحدك. استمتع!

@neounix شكرًا جزيلاً لك على هذه الإجابة، لقد بذلت جهدًا إضافيًا وأنا أقدر ذلك حقًا. :smile:

هل توجد طريقة للاتصال بقاعدة بيانات Discourse (تثبيت Docker ذاتي الاستضافة) باستخدام عميل SQL (مثل PSequel لـ Mac)؟

بخلاف استخدام Docker، الذي لست على دراية به (ولا أريد إفساد قاعدة البيانات)، هل هناك أوامر SQL يمكنني تشغيلها عبر إضافة مستكشف البيانات لإظهار أسماء قواعد البيانات التي يمكنني الوصول إليها في Discourse؟