Re: What user privileges do I need to CREATE FUNCTION's? - Mailing list pgsql-admin

From km4hr
Subject Re: What user privileges do I need to CREATE FUNCTION's?
Date
Msg-id 11670119.post@talk.nabble.com
Whole thread Raw
In response to Re: What user privileges do I need to CREATE FUNCTION's?  ("Milen A. Radev" <milen@radev.net>)
Responses Re: What user privileges do I need to CREATE FUNCTION's?
List pgsql-admin
Thanks Milen. Assigning superuser role worked.

Speaking of schema's, I logged in as user "postgres" and created a schema
called "schema1" as follows:
CREATE SCHEMA schema1 AUTHORIZATION newuser;

I then typed "\dn" and saw "schema1" in the list.

I then logged in as "newuser" and typed "\dn". "schema1" was not in the
list! Why not?
I then created a table. Next I entered: "select * from schema1.newtable". An
error message
indicated that "schema1" doesn't exist. How do I make "newuser" aware of his
new schema?

thanks



Milen A. Radev-2 wrote:
>
> km4hr написа:
>> I'm installing an application that provides a ".sql" script to create
>> tables
>> and other objects in a postgresql database. When I run the script as user
>> "postgres" the script executes without errors. But then all the tables
>> and
>> other objects are owned by "postgres". A user that I created to access
>> the
>> tables, "newuser",  doesn't have privileges needed to use them.
>>
>> If I login as "newuser" and execute the install script, I get errors
>> indicating "newuser" doesn't have privileges to CREATE FUNCTION's .
>>
>> How should I execute the install script so that all the objects are owned
>> by
>> "newuser" and the FUNCTIONS are created?
>
> You need to create all DB objects with one preferably administrative
> role and then GRANT only some privileges to other, everyday roles.
> Something like (assuming those are run as a administrator):
>
> CREATE TABLE example_table (
>    id integer PRIMARY KEY,
>    ...
> );
>
> REVOKE ALL PRIVILEGES ON TABLE example_table FROM PUBLIC;
> GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE example_table TO newuser;
>
> REVOKE ALL PRIVILEGES ON SEQUENCE example_table_id_seq FROM PUBLIC;
> GRANT USAGE ON SEQUENCE example_table_id_seq TO newuser;
>
>
> CREATE FUNCTION example_func(...) RETURNS ... AS $$
>    ...
> $$ LANGUAGE SQL;
>
> REVOKE ALL PRIVILEGES ON FUNCTION example_func FROM PUBLIC;
> GRANT EXECUTE ON FUNCTION example_func TO newuser;
>
>
>
> Or you could change the owner of the newly created DB object:
>
> ALTER TABLE example_table OWNER TO newuser;
> ALTER FUNCTION example_func(...) OWNER TO newuser;
>
>
> This way the new owner has all the privileges on that object. Of
> course I prefer the first method of dealing with the needed privileges.
>
>
>> What privileges does "newuser" need to create functions?  I can't find
>> that
>> described in the postgres manual?
>
> I suppose the role should be the owner of the schema or a superuser.
>
>
> --
> Milen A. Radev
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: don't forget to increase your free space map settings
>
>

--
View this message in context:
http://www.nabble.com/What-user-privileges-do-I-need-to-CREATE-FUNCTION%27s--tf4099063.html#a11670119
Sent from the PostgreSQL - admin mailing list archive at Nabble.com.


pgsql-admin by date:

Previous
From: Alvaro Herrera
Date:
Subject: Re: syslog: log line length?
Next
From: km4hr
Date:
Subject: Re: What user privileges do I need to CREATE FUNCTION's?