我试图在pgAdmin 4中查看AACT数据库中的原始数据。我在Mac电脑上。当我试图查看'complete_oncology'表中的前100行时,我得到以下错误:
ERROR: permission denied for schema public
LINE 1: SELECT * FROM public.complete_oncology
^
SQL state: 42501
Character: 15
我是否没有足够的权限?如果是,我如何授予自己查看此表的权限?我可以查看AACT数据库中不同架构的其他表。我看到一些用户建议授予自己以下权限,但没有运气:
GRANT SELECT ON complete_oncology TO PUBLIC
这只会出现一个错误:
ERROR: relation "complete_oncology" does not exist
SQL state: 42P01
3条答案
按热度按时间ioekq8ef1#
如果你得到
public.complete_oncology
的“permission denied”,但是oncology
的“relationship does not exist”,这只能意味着一件事:你没有public
架构上的USAGE
权限。获取要运行的架构的所有者
然后你就可以看到这个表了。如果你仍然没有对表本身的权限,让所有者也授予你对表的
SELECT
权限。qmb5sa222#
在PostgreSQL 15中,处理用户的表创建权限的方式发生了变化。与pgAdmin没有直接关系,但我认为人们可能会遇到这个问题。
通常,在允许用户在数据库中创建表之后,您不必特别定义他们在SCHEMA中有这样做的权限,因为
public
将是默认的。在PostgreSQL 15中,这已经改变了(source):
PostgreSQL 15还从公共(或默认)模式中撤销除数据库所有者之外的所有用户的CREATE权限。
因此,将得到以下错误:
ERROR: permission denied for schema public
现在你的流程应该看起来像这样:
当然可以根据需要更改权限。
最后一步,我们明确地告诉
EXAMPLE_USER
对EXAMPLE_DB
中的模式public
具有特权,这在PostgreSQL 15中引入。g6ll5ycj3#
1.转到popsql上的首选项设置
1.连接
1.删除您拥有的连接
1.添加新的连接填写表单-连接名称(由您决定)-打开连接类型“直接从我的计算机连接”-主机名:localhost(在输入localhost之前,打开连接类型“connect directly from mycomputer”)-port:3306 -数据库名称:与之前在cmd sql -username上创建的相同:根