データベースへのアクセス

I am trying to access my database via a GUI (Psequel).

I forwarded the port setting from my container as such:

app.yml:

expose:
  <standard definitions>
  - "15432:5432" # PostgreSQL

Also changed my password as such:

./launcher enter app
su - postgres
psql
ALTER ROLE postgres WITH PASSWORD '<your password>';

And I am unable to access the database. Any suggestions?
「いいね!」 1

If you only need a static snap shot of the database then from https://<site>/admin/backups download a backup. It should be a *.tar.gz file and when uncompressed will be a *.sql file. Create a PostgreSQL database on another machine, which could even be your laptop, and then import the *.sql file.

Now you should be able to access the data all you want with any means that can connect to a PostgreSQL database.

I use the above but access the Discourse database in PostgreSQL via ODBC.

HTH

「いいね!」 2

ok good idea.
Actually I figured it out. It runs on port 5432 also in the container.
it should read:
expose:

  • “5432:5432” # PostgreSQL

thanks

「いいね!」 6

皆さん、こんにちは。

以下の手順で pgadmin を使用して postgres db にアクセスできます。

  • app.yml から expose port コードを削除し、アプリを再構築します。
  • サーバー管理ポータル(Digital Ocean、AWS など)にアクセスします。ポート 5432 を開くファイアウォールルールを作成します。
  • pgadmin の SSH タブを使用して、サーバーアドレスと認証情報でサーバーにサインインします。

これでうまくいくか教えてください。

よろしくお願いいたします。
Kimberly

@EricGT まさかそんな考えは思いつきませんでした!ありがとうございます!! :slight_smile:

「いいね!」 1

こんにちは!

念のため確認させてください。dump.sql を PostgreSQL データベースにエクスポートすると、テーブルが空になってしまいます。その理由は明確ではありません。バックアップファイルをダウンロードした後、以下の手順を実行しています。

  1. pgAdmin を開く
  2. 新しいデータベースを作成する
  3. クエリツールを開く
  4. クエリツールで「開く」を使用し、dump.sql ファイルを選択する
  5. ダンプスクリプトを実行する

すべて成功したと表示されますが、「データを表示」するとテーブルは空です。

また、インスタンスの管理方法によるものかもしれませんが、users テーブルも含まれていないようです。しかし、誰が何をしたかを知るためにそのテーブルが必要です。

何か見落としていることはありますか?よろしくお願いします!

dump.sqlのサイズはどのくらいですか? 数MB(最低でも)は大きい必要があります。ファイルの中身を確認していただけますか? 例:

$ zgrep -i "CREATE TABLE public.users" dump.sql.gz
# 出力は以下のようになります
> CREATE TABLE public.users (

これが見えない場合、ダンプが間違っている可能性があります。

また、ダンプのエクスポート方法の手順を共有していただくか、コンソール出力をここに貼り付けていただけると、問題をより理解することができます。

「いいね!」 1

ありがとうございます! :slight_smile:

6.34 GB です!

The image shows a line of SQL code on a terminal, attempting to use a file named "dump.sql" to express a CREATE TABLE statement. (Captioned by AI)

ダンプをダウンロードするために、@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
01/23/2025  05:04 AM       407,213,170 abc-2025-01-23-095947-v20250122131007.sql.gz

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

01/23/2025  05:04 AM    <DIR>          abc-2025-01-23-095947-v20250122131007.sql
  1. sql ファイルがあるディレクトリに開いた Windows コマンド プロンプトを使用して、sql ファイルが存在することを確認しました。
C:\Users\Groot\Downloads\abc-2025-01-23-095947-v20250122131007.sql>dir

01/23/2025  05:04 AM     1,572,346,154 abc-2025-01-23-095947-v20250122131007.sql
               1 File(s)  1,572,346,154 bytes
  1. 同じ Windows コマンド プロンプトを使用して、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 で使用してデータをインポートできるようになることを願っています。


追記

約5年前にこの件について投稿した際(https://meta.discourse.org/t/accessing-database/154125/2?u=ericgt)、ダウンロードされるファイルの種類は tar.gz でしたが、現在は sql.gz になっています。唯一の違いは、解凍ステップが1つ少なくなったことです。

「いいね!」 2

こんにちは、@EricGT さん

ご協力いただきありがとうございます!私も(ファイルがまだtar.gz形式だったので)追加で1つの手順を踏みましたが、それ以外はすべて同じ手順に従いました。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を使用することでした。

「いいね!」 1

大変お世話になりました。本当に感謝しています。ダンプファイル(dump.sql)が以前のバージョンからのものであったのに対し、私は最新のPostgreSQLバージョンを使用しようとしていたことが判明しました。これは、あなたが使用したガイドに従おうとしている間に発見しました。ありがとうございます!

「いいね!」 1