> zuhans@iname.com wrote:
>> hello,
>>
>> i'm rather new to postgresql and am now standing in front of a big
>> problem.
>>
>> if i want to host my database on any provider out there, i don't now
>> see any chance to get my own right to insert new users into my db.
>> because: i'd only be able to do this, when i had the rights to
>> "createuser", but that would mean, that i'd have the
>> superuser-rights for the whole db's in "public" - if there is only
>> this base-schema.
>>
>> do i understand this right?
No.
-- Function: create_user(name)
CREATE OR REPLACE FUNCTION create_user(name)
RETURNS bool AS
'
DECLARE
PWD VARCHAR;
CMD VARCHAR;
BEGIN
PWD := \'INITIALPWD\';
IF EXISTS(SELECT * FROM pg_user WHERE usename = $1) THEN
RETURN FALSE;
END IF;
CMD := \'CREATE USER "\' || $1 || \'" WITH ENCRYPTED PASSWORD \' || PWD\';
EXECUTE CMD;
RETURN TRUE;
END;
'
LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER;
-- Note: "SECURITY DEFINER". This function was created by a user that
does have create user privileges.
--Berend Tober