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



可能重复:
postgresql数据库所有者可以';t访问数据库-“找不到关系”

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

运行脚本之前,我可以连接到这个世界,一切都很好。

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

似乎只有在我第一次以postgres用户的身份登录到我的服务器上之后,我才能在MY_DATABASE_NAME上通过dt查看关系,就像这样:sudo su - postgres

当我SSH并运行psql MY_DATABASE_NAME -U MY_NON_POSTGRES_USER而没有切换到postgres用户时,dt' results in a没有找到关系`message。

起初,我认为权限或所有权是问题所在。我以服务器的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;

不再疼痛。世界又好了。

相关内容

  • 没有找到相关文章

最新更新