Thread: Unusual permissions behaviour
I have this problem in 7.1.3 - I can't confirm at the moment if it exists in 7.2. I have already granted the 'au-dietclub' user delete and insert permissions on the users_flags table at this point: australia=> delete from users_flags; DELETE 0 australia=> delete from users_flags where user_id=1; ERROR: users_flags: Permission denied. australia=> \connect - chriskl You are now connected as new user chriskl. australia=# grant select on users_flags to "au-dietclub"; CHANGE australia=# \connect - au-dietclub You are now connected as new user au-dietclub. australia=> delete from users_flags where user_id=1; DELETE 0 Why do I get a permission denied when I qualify the DELETE statement??? Chris
> I have this problem in 7.1.3 - I can't confirm at the moment if > it exists in 7.2. > > I have already granted the 'au-dietclub' user delete and insert > permissions on the users_flags table at this point: > > australia=> delete from users_flags; > DELETE 0 > australia=> delete from users_flags where user_id=1; > ERROR: users_flags: Permission denied. > australia=> \connect - chriskl > You are now connected as new user chriskl. > australia=# grant select on users_flags to "au-dietclub"; > CHANGE > australia=# \connect - au-dietclub > You are now connected as new user au-dietclub. > australia=> delete from users_flags where user_id=1; > DELETE 0 > > Why do I get a permission denied when I qualify the DELETE statement??? > > Chris > The schema: CREATE TABLE "users_flags" ("user_id" integer NOT NULL REFERENCES users_users(user_id) ON DELETE CASCADE,"flag_id" integer NOT NULL REFERENCES medidiets_flags(flag_id) ON DELETE CASCADE,Primary Key ("user_id", "flag_id") ); CREATE INDEX "users_flags_flag_id_idx" on "users_flags" using btree ( "flag_id" " int4_ops" );
"Christopher Kings-Lynne" <chriskl@familyhealth.com.au> writes: > Why do I get a permission denied when I qualify the DELETE statement??? IIRC, you need SELECT permission to reference the values of any fields of the table. If you don't have SELECT permission, the table should be write-only to you; you shouldn't be able to learn things about its contents by doing stuff like begin;delete from foo where col = 1;-- observe # rows deletedrollback;-- now I know whether there is a row with col = 1 regards, tom lane