我尝试运行简单的SQL命令:
select * from site_adzone;
我得到了这个错误
错误:关系site_adzone的权限被拒绝
这里有什么问题呢?
我也试着为其他表做选择,得到了同样的问题。我也试着这样做:
GRANT ALL PRIVILEGES ON DATABASE jerry to tom;
但我收到了控制台的回复
警告:没有特权授予“jerry”
有人知道是哪里出了问题吗?
我尝试运行简单的SQL命令:
select * from site_adzone;
我得到了这个错误
错误:关系site_adzone的权限被拒绝
这里有什么问题呢?
我也试着为其他表做选择,得到了同样的问题。我也试着这样做:
GRANT ALL PRIVILEGES ON DATABASE jerry to tom;
但我收到了控制台的回复
警告:没有特权授予“jerry”
有人知道是哪里出了问题吗?
当前回答
数据库上的GRANT不是您所需要的。格兰特直接在桌子上。
在数据库上授予特权主要用于授予或撤销连接特权。这允许您指定谁可以在数据库中做一些事情,如果他们有足够的其他权限的话。
你想要的是:
GRANT ALL PRIVILEGES ON TABLE side_adzone TO jerry;
这将解决这个问题。
其他回答
第一步也是最重要的一步是连接到你的数据库:
psql -d yourDBName
第二步,授予特权
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO userName;
确保以表的所有者身份登录psql。 要找出谁拥有这些表,请使用\dt
psql -h CONNECTION_STRING DBNAME -U OWNER_OF_THE_TABLES
然后你就可以运行GRANTS了
在所有表上发布Ron E授予特权的答案,因为它可能对其他人有用。
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO jerry;
数据库上的GRANT不是您所需要的。格兰特直接在桌子上。
在数据库上授予特权主要用于授予或撤销连接特权。这允许您指定谁可以在数据库中做一些事情,如果他们有足够的其他权限的话。
你想要的是:
GRANT ALL PRIVILEGES ON TABLE side_adzone TO jerry;
这将解决这个问题。
当您以postgres用户创建一个表,然后试图以普通用户访问它时,这种情况经常发生。 在这种情况下,最好以postgres用户登录,并使用以下命令更改表的所有权:
alter table <TABLE> owner to <USER>;