我尝试运行简单的SQL命令:

select * from site_adzone;

我得到了这个错误

错误:关系site_adzone的权限被拒绝

这里有什么问题呢?

我也试着为其他表做选择,得到了同样的问题。我也试着这样做:

GRANT ALL PRIVILEGES ON DATABASE jerry to tom;

但我收到了控制台的回复

警告:没有特权授予“jerry”

有人知道是哪里出了问题吗?


当前回答

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public to jerry;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public to jerry;
GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public to jerry;

其他回答

PostgreSQL。在bash终端上运行:

psql db_name -c "GRANT ALL ON ALL TABLES IN SCHEMA public to db_user;"
psql db_name -c "GRANT ALL ON ALL SEQUENCES IN SCHEMA public to db_user;"
psql db_name -c "GRANT ALL ON ALL FUNCTIONS IN SCHEMA public to db_user;"

数据库上的GRANT不是您所需要的。格兰特直接在桌子上。

在数据库上授予特权主要用于授予或撤销连接特权。这允许您指定谁可以在数据库中做一些事情,如果他们有足够的其他权限的话。

你想要的是:

 GRANT ALL PRIVILEGES ON TABLE side_adzone TO jerry;

这将解决这个问题。

你应该:

使用postgres用户通过DBeaver连接数据库 在左侧选项卡上打开数据库 打开角色标签/下拉菜单 选择您的用户 在右边标签上按“权限”标签 按下模式标签 按表格标签/下拉 选择所有表 选择所有需要的权限复选框(或按授予全部) 按保存

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public to jerry;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public to jerry;
GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public to jerry;

在所有表上发布Ron E授予特权的答案,因为它可能对其他人有用。

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO jerry;