访问数据库

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 数据库:

  • 移除 app.yml 中的 expose port 代码并重建应用程序。
  • 转到您的服务器管理门户(例如 Digital Ocean、AWS 等)。创建一个开放端口 5432 的防火墙规则。
  • 使用 pgadmin SSH 选项卡:使用服务器地址和凭据登录到您的服务器。

如果这对您有效,请告诉我。

此致,
金伯利

@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!

图片显示了终端上的一行 SQL 代码,试图使用名为“dump.sql”的文件来表达一个 CREATE TABLE 语句。 (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 年前,当我 发帖 讨论这个问题时,下载的文件类型是 tar.gz,现在是 sql.gz。唯一的区别是现在需要少一步解压缩。

2 个赞

你好 @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,如 此处 所述。

1 个赞

非常感谢您的所有帮助!我真的很感激。原来我试图使用最新的 postgresql 版本,而 dump.sql 来自之前的版本。我在尝试遵循您使用的指南时发现了这一点。谢谢!

1 个赞