Shridhar Daithankar <[EMAIL PROTECTED]> writes:
> If this is the idea, I suggest that all user/group  transactions be logged. So 
> that admin can go thr. them to find out what was id of an user at any given 
> time. Otherwise admin is not likely to keep list of uids handy and in tough 
> situation, that is what he/she is going to need.

No, it's not really a problem.  The only reason why you'd care about
recreating a user with a pre-existing SYSID is if there are still
objects or permissions entries in the database with that ownership ID
--- and in that case, you can easily see what ID they have.  An example:

regression=# create table foo (f1 int);
CREATE TABLE
regression=# create user joe;
CREATE USER
regression=# grant select on foo to joe;
GRANT
regression=# \z foo
 Access privileges for database "regression"
 Schema | Table |     Access privileges
--------+-------+----------------------------
 public | foo   | {=,postgres=arwdRxt,joe=r}
(1 row)

... time passes ...

regression=# drop user joe;
DROP USER

... after awhile you realize your mistake:

regression=# \z foo
 Access privileges for database "regression"
 Schema | Table |     Access privileges
--------+-------+----------------------------
 public | foo   | {=,postgres=arwdRxt,123=r}
(1 row)

... and here's how you get out of it:

regression=# create user joe with sysid 123;
CREATE USER
regression=# \z foo
 Access privileges for database "regression"
 Schema | Table |     Access privileges
--------+-------+----------------------------
 public | foo   | {=,postgres=arwdRxt,joe=r}
(1 row)

(now you can do a REVOKE if you need to)

                        regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

Reply via email to