Доступ к базе данных

Я пытаюсь получить доступ к своей базе данных через графический интерфейс (Psequel).

Я пробросил порт контейнера следующим образом:

app.yml:

expose:
  <стандартные определения>
  - "15432:5432" # PostgreSQL

Также я изменил пароль следующим образом:

./launcher enter app
su - postgres
psql
ALTER ROLE postgres WITH PASSWORD '<ваш пароль>';

Но я не могу получить доступ к базе данных. Есть какие-либо предложения?

Если вам нужен только статический снимок базы данных, скачайте резервную копию с https:///admin/backups. Это должен быть файл с расширением *.tar.gz, который после распаковки станет файлом *.sql. Создайте базу данных PostgreSQL на другом компьютере (это может быть даже ваш ноутбук), а затем импортируйте файл *.sql.

Теперь вы сможете получать доступ к данным любым способом, который поддерживает подключение к базе данных PostgreSQL.

Я использую описанный выше метод, но обращаюсь к базе данных Discourse в PostgreSQL через ODBC.

Надеюсь, это поможет.

Хорошая идея.
На самом деле я разобрался. В контейнере он тоже работает на порту 5432.
Должно быть так:
expose:
<стандартные определения>

  • “5432:5432” # PostgreSQL

спасибо

Всем привет,

Я могу получить доступ к своей базе данных PostgreSQL через pgAdmin, выполнив следующие шаги:

  • Удалите код для открытия порта из вашего файла app.yml и пересоберите приложение.
  • Перейдите в панель управления сервером (например, DigitalOcean, AWS и т. д.). Создайте правило брандмауэра, открывающее порт 5432.
  • В pgAdmin на вкладке SSH: войдите на сервер, используя адрес сервера и учетные данные.

Дайте знать, если это сработает для вас.

С уважением,
Кимберли

@EricGT Никогда об этом не думал! Спасибо!! :slight_smile:

Привет!

Хотел бы ещё раз уточнить у вас, пожалуйста. Когда я экспортирую dump.sql в базу данных PostgreSQL, у меня получаются пустые таблицы. Не совсем понятно, почему. Вот шаги, которые я выполняю после загрузки файла резервной копии:

  1. Открыть pgAdmin
  2. Создать новую базу данных
  3. Открыть инструмент запросов (Query Tool)
  4. В инструменте запросов выбрать «Открыть» и указать файл dump.sql
  5. Выполнить скрипт дампа

Сообщается, что всё прошло успешно, но при просмотре данных в таблицах они оказываются пустыми.

Кроме того, возможно, это связано с особенностями управления экземпляром, но кажется, что таблица users также не включена, а она мне нужна, чтобы знать, кто что делал.

Не упустил ли я что-то? Спасибо!

Каков размер файла dump.sql? Он должен быть значительным (несколько мегабайт как минимум). Можете ли вы заглянуть внутрь файла? Например:

$ zgrep -i "CREATE TABLE public.users" dump.sql.gz
#ожидаемый вывод
> CREATE TABLE public.users (

Если вы не видите этого, то дамп, вероятно, некорректен.

Кроме того, если вы поделитесь своими шагами по экспорту дампа или вставите вывод консоли сюда, мы сможем лучше понять вашу проблему.

Спасибо большое! :slight_smile:

6,34 ГБ!

На изображении показана строка SQL-кода в терминале, пытающаяся использовать файл "dump.sql" для выражения оператора CREATE TABLE. (Подписано ИИ)

Чтобы скачать дамп, я следовал шагам, предложенным выше @EricGT:

После этого я выполнил следующие шаги:

А затем, когда я хотел просмотреть данные, система показала:

Только что перепроверил это.

  1. Через административную страницу https://<сайт>/admin/backup запросил загрузку и выполнил все шаги: было несколько этапов, включая проверку через электронную почту и скачивание файла.
  2. Скачанный файл имел расширение gz, например abc-2025-01-23-095947-v20250122131007.sql.gz. В Windows я распаковал его с помощью 7-zip, что создало директорию с тем же именем, но без .gz в конце.
C:\Users\Groot\Downloads>dir *.sql.gz
23.01.2025  05:04       407 213 170 abc-2025-01-23-095947-v20250122131007.sql.gz

C:\Users\Groot\Downloads>dir *.sql

23.01.2025  05:04         <DIR>          abc-2025-01-23-095947-v20250122131007.sql
  1. Через командную строку Windows, открытую в папке с SQL-файлом, подтвердил наличие файла.
C:\Users\Groot\Downloads\abc-2025-01-23-095947-v20250122131007.sql>dir

23.01.2025  05:04     1 572 346 154 abc-2025-01-23-095947-v20250122131007.sql
               1 файл(ов)  1 572 346 154 байт
  1. В той же командной строке использовал команду type, чтобы вывести начало SQL-файла.

type <файл> /a | more

C:\Users\Groot\Downloads\abc-2025-01-23-095947-v20250122131007.sql>type "abc-2025-01-23-095947-v20250122131007.sql" /a | more

abc-2025-01-23-095947-v20250122131007.sql


--
-- PostgreSQL database dump
--

-- Dumped from database version 15.8 (Debian 15.8-1.pgdg110+1)
-- Dumped by pg_dump version 15.10 (Debian 15.10-1.pgdg120+1)

-- Started on 2025-01-23 09:59:47 UTC

SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';

Надеюсь, это поможет вам использовать SQL-файл в PGAdmin для импорта данных.


NB

Когда я писал об этом примерно 5 лет назад, тип скачиваемого файла был tar.gz, сейчас — sql.gz. Единственное отличие в том, что теперь требуется на один шаг распаковки меньше.

Привет, @EricGT

Большое спасибо за помощь! Я выполнил все те же шаги (плюс один дополнительный, так как мой файл всё ещё имеет расширение .tar.gz). Я получил тот же результат с SQL-файлом:

--
-- PostgreSQL database dump
--
.........
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';

Однако проблема в том, что когда я использую PgAdmin для получения данных, все таблицы пусты, а таблица Users вообще отсутствует.

Извините, но я не могу помочь с PgAdmin. Я не использую PgAdmin, и мне пришлось бы его установить, чтобы попробовать. Установка PgAdmin — это шаг, который я не хочу предпринимать.

Единственный раз, когда я обращался к экспортированной базе данных Discourse, я установил PostgreSQL и odbc-postgresql, а затем использовал iusql, как указано здесь.

Огромное спасибо за вашу помощь! Я очень это ценю. Оказалось, что я пытался использовать последнюю версию PostgreSQL, в то время как файл dump.sql был из предыдущей версии. Я понял это, когда пытался следовать руководству, которое вы использовали. Спасибо!