Discourse обычно работает внутри виртуальной машины (Ubuntu) в контейнере (Docker в промышленной среде и Vagrant в среде разработки).
По этой причине Вы не можете получить доступ к серверу базы данных форума обычным простым путём: ведь сервер баз данных работает внутри виртуальной машины, а Ваша операционная система ничего не знает о программах внутри виртуальной машины.
Общение с программами внутри виртуальной машины реализуется через порты.
Вам нужно открыть туннель SSH: привязать порт Вашего компьютера к порту виртуальной машины.
Discourse использует в качестве сервера баз данных PostgreSQL, который слушает порт 5432
.
Таким образом, Вам надо привязать какой-нибудь порт к порту 5432 виртуальной мащины.
Если Discourse работает внутри Docker, то привязка портов делается в секции «expose» файла YML контейнера:
expose:
<standard definitions>
- "15432:5432" # PostgreSQL
Если Discourse работает внутри Vagrant, то привязка портов делается посредством консоли:
vagrant ssh -- -L 15432:localhost:5432
Далее, установите какую-нибудь программу-клиент для работы с PostgreSQL.
Я рекомендую phpPgAdmin для доступа к промышленному серверу Discourse, потому что эта программа работает в браузере (аналогично MySQL) и, работая на том же сервере, что и Discourse, не требует открытия порта базы данныъ наружу в интернет.
Для локальной разработки (среды Vagrant) я пользуюсь pgAdmin: это обычная программа для Windows.
В среде Vagrant системное имя пользователя PostgreSQL — «discourse
», пароля нет.
В среде Docker системное имя пользователя Docker — «postgres
», пароля тоже нет, но Вам надо его задать, потому что иначе phpPgAdmin не даст авторизоваться, да и по соображениям безопасности.
Задать пароль можно так:
./launcher enter app
su - postgres
psql -d postgres -c "ALTER ROLE postgres WITH PASSWORD '<пароль>';"
Интерфейс phpPgAdmin:
Интерфейс pgAdmin: