Thread: Schemas, Roles & Search Path
Hi all,
I just want to check my understanding of schemas, search paths and roles in implementing my database design.The relations within each schema still need appropriate privilege settings, of course.
Or do I need to set the search path for each user individually?
ALTER ROLE joe SET search_path=common, facilities, accounting;
I don't see any references to setting the search_path for group roles, so I assume I need to set this at the user role level. Is that correct?
My thinking on the design could be off base, but I think this is the general approach I want.
Thanks!
--
D.C. Parris, FMP, Linux+, ESL Certificate
Minister, Security/FM Coordinator, Free Software Advocate
Minister, Security/FM Coordinator, Free Software Advocate
GPG Key ID: F5E179BE
Don Parris <parrisdc@gmail.com> writes: > I *think* I want to set the search path on the group roles so that the > Facilities team can see the COMMON and FACILITIES schemas: > ALTER ROLE fm_users search_path=common, facilities, accounting; > > Or do I need to set the search path for each user individually? > ALTER ROLE joe SET search_path=common, facilities, accounting; The latter. A session only absorbs ALTER ROLE SET settings for the exact role you're logging in as. (Otherwise there would be a need for a conflict resolution rule, and it's pretty hard to see how that would work in general for arbitrary settings.) Role "inheritance" applies to granted privileges only. regards, tom lane
Just a side note. the search_path only sets the priority for resolving table locations
EG: First look in COMMON, then FACILITIES until the table name is found.On Sat, Jan 9, 2016 at 10:22 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Don Parris <parrisdc@gmail.com> writes:
> I *think* I want to set the search path on the group roles so that the
> Facilities team can see the COMMON and FACILITIES schemas:
> ALTER ROLE fm_users search_path=common, facilities, accounting;
>
> Or do I need to set the search path for each user individually?
> ALTER ROLE joe SET search_path=common, facilities, accounting;
The latter. A session only absorbs ALTER ROLE SET settings for the
exact role you're logging in as. (Otherwise there would be a need
for a conflict resolution rule, and it's pretty hard to see how that
would work in general for arbitrary settings.) Role "inheritance"
applies to granted privileges only.
regards, tom lane
--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general
--
Melvin Davidson
I reserve the right to fantasize. Whether or not you
wish to share my fantasy is entirely up to you.
I reserve the right to fantasize. Whether or not you
wish to share my fantasy is entirely up to you.

On Sat, Jan 9, 2016 at 11:16 AM, Melvin Davidson <melvin6925@gmail.com> wrote:
However, if you prefix the table name with the actual schema EG: COMMON.table, then the table is located directly and search_path is not needed.Just a side note. the search_path only sets the priority for resolving table locationsEG: First look in COMMON, then FACILITIES until the table name is found.
Melvin, thanks for that - confirms what I understand about schemas.
unless they are quoted. So probably you want schema names to be common, facilities, etc.Finally, it is NOT a good idea to use UPPERCASE or CamelCase for object names in PostgreSQL, as PostgreSQL will naturally assume lowercase for all objects
Thanks. I was just capitalizing for the e-mail. I never actually use upper or camel case in my code.
On Sat, Jan 9, 2016 at 10:22 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:Don Parris <parrisdc@gmail.com> writes:
> I *think* I want to set the search path on the group roles so that the
> Facilities team can see the COMMON and FACILITIES schemas:
> ALTER ROLE fm_users search_path=common, facilities, accounting;
>
> Or do I need to set the search path for each user individually?
> ALTER ROLE joe SET search_path=common, facilities, accounting;
The latter. A session only absorbs ALTER ROLE SET settings for the
exact role you're logging in as. (Otherwise there would be a need
for a conflict resolution rule, and it's pretty hard to see how that
would work in general for arbitrary settings.) Role "inheritance"
applies to granted privileges only.
regards, tom lane
--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general
--Melvin Davidson
I reserve the right to fantasize. Whether or not you
wish to share my fantasy is entirely up to you.
--
D.C. Parris, FMP, Linux+, ESL Certificate
Minister, Security/FM Coordinator, Free Software Advocate
Minister, Security/FM Coordinator, Free Software Advocate
GPG Key ID: F5E179BE
On Sat, Jan 9, 2016 at 10:22 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Don Parris <parrisdc@gmail.com> writes:
> I *think* I want to set the search path on the group roles so that the
> Facilities team can see the COMMON and FACILITIES schemas:
> ALTER ROLE fm_users search_path=common, facilities, accounting;
>
> Or do I need to set the search path for each user individually?
> ALTER ROLE joe SET search_path=common, facilities, accounting;
The latter. A session only absorbs ALTER ROLE SET settings for the
exact role you're logging in as. (Otherwise there would be a need
for a conflict resolution rule, and it's pretty hard to see how that
would work in general for arbitrary settings.) Role "inheritance"
applies to granted privileges only.
regards, tom lane
Thanks Tom, that helps!
Don
--
D.C. Parris, FMP, Linux+, ESL Certificate
Minister, Security/FM Coordinator, Free Software Advocate
Minister, Security/FM Coordinator, Free Software Advocate
GPG Key ID: F5E179BE