On Tue, 27 Mar 2001, Adam Haberlach wrote: > > This seems pretty out-of-date, since we seem to have had a 'CREATE GROUP' command > for as long as I can remember -- are there any more accurate docs out there? > How would I go about updating them? > > http://www.postgresql.org/users-lounge/docs/7.0/postgres/security17760.htm > > /***/ > Currently, there is no easy interface to set up user groups. You have to > explicitly insert/update the pg_group table. For example: > > jolly=> insert into pg_group (groname, grosysid, grolist) > jolly=> values ('posthackers', '1234', '{5443, 8261}'); > INSERT 548224 > jolly=> grant insert on foo to group posthackers; > CHANGE > jolly=> > /***/ > > The easiest thing to do is to write a small utility to do this. Here is a litle perlscript (as attachement) that does the inserting feel free to use it. You need DBI and DBD::Pg to use it. - Einar Karttunen
#!/usr/bin/perl # Einar Karttunen 28.3.2001 <[EMAIL PROTECTED]> # this file must be distributed under GNU GPL use DBI; use DBD::Pg; print 'group name: '; $gn = <>; chomp $gn; print 'group id (random if none entered): '; $gid= <>; chomp $gid; unless($gid =~ /^\d+$/) { $gid = int(rand(500000)); } print 'space separated list of users to add: '; $u = <>; chomp $u; @users = split(' ',$u); print ("groupname=$gn, groupid=$gid, users="); foreach (@users) { print "$_\/"; } print "\ncontinue (y/n) "; exit unless(<> =~ /y/o); $dbh = DBI->connect("dbi:Pg:dbname=ressu", einar, poiu,{RaiseError => 1, AutoCommit => 1}); foreach $n (@users) { $val = $dbh->selectrow_array(q|SELECT usesysid FROM pg_user WHERE usename='|.$n.q|'|); push @a,$val; } $dbh->do(qq|INSERT INTO pg_group (groname, grosysid, grolist) VALUES ('$gn', '$gid', '{|.join(',',@a).q|}')|); $dbh->disconnect(); print "success\n";
---------------------------(end of broadcast)--------------------------- TIP 2: you can get off all lists at once with the unregister command (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])