1

可能重复:
postgresql 数据库所有者无法访问数据库 - “未找到关系。”

核心问题:有一个Django 网站,当我尝试运行pg_dump MY_DATABASE_NAME -cOx -E UTF8 > MY_SCRIPT_NAME.sql

运行脚本之前,我可以连接并且一切正常。

运行脚本后,我生活在一个痛苦的世界中,我试图通过使用在 PostgreSQL 中同时修改所有表中描述的各种方法检查和更改 MY_DATABASE_NAME 和表的所有权

似乎只有\dt在我的服务器上第一次以 postgres 用户身份登录后,我才能通过 MY_DATABASE_NAME 看到关系,如下所示:sudo su - postgres

当我 SSH 并在psql MY_DATABASE_NAME -U MY_NON_POSTGRES_USER 没有切换到 postgres 用户的情况下运行时,\dt' results in a没有找到任何关系的消息。

起初我认为权限或所有权是问题所在。我以服务器的 postgres 用户身份登录,并将 MY_DATABASE_NAME 及其所有表的所有者更改为 MY_NON_POSTGRES_USER。

结果和以前一样。我的 postgres 用户显示了关系,但以另一个角色登录会导致“未找到关系消息”,并且我的网站抱怨说“关系 some_table 不存在”

为什么这会发生在我身上?

4

1 回答 1

5

Wow. I really just composed a TL;DR description of my question and realized immediately afterwards my folly:

Although I'd connected to MY_DATABASE_NAME and given ownership to the correct user for all tables and the database, I'd forgotten to:

REVOKE ALL ON SCHEMA public FROM MY_NON_POSTGRES_USER;

GRANT ALL ON SCHEMA public TO MY_NON_POSTGRES_USER;

No more pain. All is right with the world again.

于 2011-10-23T14:13:48.230 回答