我在pgadmin中创建了几个登录和组角色。然后,我将这些登录角色添加到各自的组角色中。然后,我将这些组角色的登录权限授予数据库以及其他所需的权限。
但是连接到数据库失败了"用户没有CONNECT权限"。
然后我将登录权限直接授予pgsql中的登录角色,因为pgadmin不允许我为登录角色添加权限,只添加组角色。
现在,用户可以连接到数据库,但在我直接向登录角色授予权限之前,仍然会收到各种权限错误。
这是PostgreSQL中的一个错误(适用于Windows的v 9.4.5),或者这里发生了什么?我还尝试使用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;
以上语句不提供user_l权限来连接数据库,但是以下是。
GRANT CONNECT ON DATABASE db TO user_l;
然后问题是函数和其他需要特权的事情重复出现。