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(50));
}
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])