postgres已经grant all privileges了,插入数据报错permission denied for sequence

postgresql by Xudong Zhang @ 2016-07-24 21:43:30

我先grant all privileges了,select也能看数据了

# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO user1;
GRANT

但是insert数据就报错了

=> insert into admin (name, "createdAt") values ('user1', now());                                                                                               
ERROR: permission denied for sequence admin_id_seq

这是怎么回事?


GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO user1;并不包含sequence(postgres的自增序列)在内,所以还需要grant sequence的权限给用户

# GRANT USAGE,SELECT on admin_id_seq TO user1;
GRANT

或者如下(把所有的sequence都授权给用户)

# GRANT ALL ON ALL sequences in schema public to user1;
by Xudong Zhang @2016-07-24 21:53:12.333 +0800 CST


我来回答

Markdown格式技巧

  • 行尾添加2个空格或者添加一个空行就能换行
  • 斜体: *hello* 或者 _world_
  • 加粗: **hello** 或者 __world__
  • 代码块: 添加空行,然后代码缩进4个空格
  • 特殊字符: 用\避免转义;\*就是*本身
  • python: `__name__`可以以代码形式输出__name__
  • 一个简单的例子

切换到移动版