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

时间:2011-10-23 14:06:31

标签: postgresql permissions database-relations

  

可能重复:
  postgresql database owner can't access database - “No relations found.”

核心问题:我有一个 Django网站抱怨关系(表格)不存在当我连接到它尝试运行由pg_dump MY_DATABASE_NAME -cOx -E UTF8 > MY_SCRIPT_NAME.sql

生成的SQL脚本之后

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

运行脚本之后,我生活在一个痛苦的世界里,我试图通过使用Modify OWNER on all tables simultaneously in PostgreSQL中描述的各种方法检查和更改MY_DATABASE_NAME和表的所有权来减轻这种痛苦。 p>

似乎只有在首次以我的服务器上的postgres用户身份登录后才能通过\dt在MY_DATABASE_NAME上看到关系: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不存在”

为什么会发生这种情况?

1 个答案:

答案 0 :(得分:4)

哇。我真的只是写了一个 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;

不再痛苦。一切都与世界同在。