关于权限:当我以postgres用户身份登录时,为什么我只能看到postgreSQL关系或表?

Why can I only see postgreSQL relations or tables when I'm logged in as the postgres user?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
postgresql database owner can't access database - “No relations found.”

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

在运行脚本之前,我可以连接,所有这些都适合这个世界。

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

似乎我只能在我的服务器上首次以postgres用户身份登录之后才能通过MY_DATABASE_NAME上的\dt查看关系:sudo su - postgres

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

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

与以前相同的结果。关系出现在我的postgres用户身上,但以另一个角色登录会导致"找不到关系的消息",我的网站抱怨"关系some_table不存在"

为什么这发生在我身上?


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

虽然我已连接到MY_DATABASE_NAME,并为所有表和数据库授予了正确用户的所有权,但我忘了:

REVOKE ALL ON SCHEMA public FROM MY_NON_POSTGRES_USER;

GRANT ALL ON SCHEMA public TO MY_NON_POSTGRES_USER;

没有更多的痛苦。 一切都是对世界的正确。