为什么我以 postgres 用户身份登录时只能看到 postgreSQL 关系或表?

mke*_*y33 1 postgresql permissions database-relations

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

核心问题:我有一个Django的网站是在抱怨的关系(表)不存在的,当我连接到它试图运行所产生的SQL脚本pg_dump MY_DATABASE_NAME -cOx -E UTF8 > MY_SCRIPT_NAME.sql

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

运行该脚本我生活在痛苦的世界,我已经试图通过检查和MY_DATABASE_NAME的改变所有权和使用表中所描述的各种方法,以减轻修改所有者的所有表中的PostgreSQL的同时

这似乎是我只能看到通过关系\dt上MY_DATABASE_NAME仅作为postgres用户最早登陆我的服务器上,像这样经过:sudo su - postgres

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

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

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

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

mke*_*y33 5

哇。我真的只是为我的问题写了一个TL;DR描述,然后立即意识到我的愚蠢:

尽管我已连接到 MY_DATABASE_NAME 并将所有表和数据库的所有权授予正确的用户,但我忘记了:

REVOKE ALL ON SCHEMA public FROM MY_NON_POSTGRES_USER;

GRANT ALL ON SCHEMA public TO MY_NON_POSTGRES_USER;

不再痛苦。世界又好了。