Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
组角色在PostgreSQL中不起作用?_Postgresql - Fatal编程技术网

组角色在PostgreSQL中不起作用?

组角色在PostgreSQL中不起作用?,postgresql,Postgresql,我在pgadmin中创建了几个登录和组角色。然后,我将这些登录角色添加到各自的组角色中。然后,我为这些组角色授予数据库的登录权限以及其他必需的权限 但连接到数据库失败,用户没有连接权限 然后我直接向pgsql中的登录角色授予登录权限,因为pgadmin不允许我向登录角色添加权限,只允许向组角色添加权限 现在,用户可以连接到数据库,但在我将权限直接授予登录角色之前,仍然会出现各种权限错误 这是PostgreSQL(针对Windows的V9.4.5)中的一个bug,还是这里发生了什么?我还尝试使用p

我在pgadmin中创建了几个登录和组角色。然后,我将这些登录角色添加到各自的组角色中。然后,我为这些组角色授予数据库的登录权限以及其他必需的权限

但连接到数据库失败,用户没有连接权限

然后我直接向pgsql中的登录角色授予登录权限,因为pgadmin不允许我向登录角色添加权限,只允许向组角色添加权限

现在,用户可以连接到数据库,但在我将权限直接授予登录角色之前,仍然会出现各种权限错误

这是PostgreSQL(针对Windows的V9.4.5)中的一个bug,还是这里发生了什么?我还尝试使用pgsql而不是pgadmin向组角色添加权限,结果相同

CREATE ROLE user_g
  NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;

CREATE ROLE user_l LOGIN
  ENCRYPTED PASSWORD 'md5...'
  NOSUPERUSER NOINHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
GRANT user_g TO user_l;

GRANT ALL ON DATABASE db TO postgres;
GRANT CONNECT ON DATABASE db TO user_g;
REVOKE ALL ON DATABASE db FROM public;
上面的语句并没有授予用户连接数据库的权限,但下面的语句却授予用户连接数据库的权限

GRANT CONNECT ON DATABASE db TO user_l;

然后,对于函数和其他需要特权的对象,问题会重复出现。

向我们展示用于创建角色的SQL语句、用户以及如何授予他们权限。“然后我授予这些组角色登录特权…”PostgreSQL没有GRANT login语句。不过,它确实有GRANT CONNECT,这似乎与错误消息有关。我已将pgadmin报告的相关sql语句添加到问题中。