可能重复:
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;
不再疼痛。世界又好了。