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

标签 postgresql permissions database-relations

<分区>

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 脚本之后

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

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

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

当我通过 SSH 并运行 psql MY_DATABASE_NAME -U MY_NON_POSTGRES_USER 而没有切换到 postgres 用户时,\dt' 导致找不到关系` 消息。

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

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

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

最佳答案

哇。我真的只是对我的问题做了一个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;

不再痛苦。世界又恢复正常了。

关于postgresql - 为什么我以 postgres 用户身份登录时只能看到 postgreSQL 关系或表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7866572/

相关文章:

ruby-on-rails - Ruby on Rails-使用现有模式将UUID实现为主键

sql - 显示两行之间变化的所有列

mysql - 如何获得链接到第三个表的两个表的总和

linux - 是否可以为每个用户配置 Linux 功能?

cakephp - CakePHP 中的多重关系

sql - 在 PostgreSQL 中实现没有触发器的复杂引用

postgresql - Kubernetes:Postgres容器不断重启

powershell 删除特定用户对文件夹的所有权限

c# - DirectorySecurity 设置特殊权限,而 FileSecurity 没有

node.js - 概念:mongo 适合应用模式吗?