newbie : setting access for users in a web enviroment

Started by robert menaover 20 years ago5 messagesgeneral
Jump to latest
#1robert mena
robert.mena@gmail.com

Hi,

I am new to postgres but coming from a MySQL enviroment.

I am confused with the necessary steps to create users and restrict them to
access/delete/insert/update data and create/delete/alter tables in a
specific database.

I've created a database test and a user testadm

createdb test

createuser -D -P testadm
Enter password for new user:
Enter it again:
Shall the new user be allowed to create more new users? (y/n) n
CREATE USER

psql test
\du
List of users
User name | User ID | Attributes | Groups
----------------+---------+----------------------------+--------
testadm | 100 | |
postgres | 1 | superuser, create database |

GRANT CREATE,REFERENCES ON DATABASE test TO testadm;

\z
Access privileges for database "test"
Schema | Name | Type | Access privileges
--------+------+------+-------------------

How can I specify that the user testadm can perform those actions to this
database?

Tks.

#2Qingqing Zhou
zhouqq@cs.toronto.edu
In reply to: robert mena (#1)
Re: newbie : setting access for users in a web enviroment

"robert mena" <robert.mena@gmail.com> wrote

How can I specify that the user testadm can perform those actions to this
database?

Use GRANT command (the opposite is REVOKE). I suppose you are using 8.1:

http://www.postgresql.org/docs/8.1/static/sql-grant.html

Regards,
Qingqing

#3Peter Eisentraut
peter_e@gmx.net
In reply to: robert mena (#1)
Re: newbie : setting access for users in a web enviroment

Am Freitag, 23. Dezember 2005 22:06 schrieb robert mena:

GRANT CREATE,REFERENCES ON DATABASE test TO testadm;

\z
Access privileges for database "test"
Schema | Name | Type | Access privileges
--------+------+------+-------------------

How can I specify that the user testadm can perform those actions to this
database?

For one thing, the command \z shows table privileges, so the empty table above
is not surprising. pg_database would give you better information.

Second, the privilege type REFERENCES does not exist for databases, only for
tables, so the command you executed does not make sense.

I suggest you peruse the GRANT manual page again.

#4robert mena
robert.mena@gmail.com
In reply to: Peter Eisentraut (#3)
Re: newbie : setting access for users in a web enviroment

Hi,

thanks for the reply.

I've already read the docs. I am using 8.0.5 btw.

One of the things I am confused is how can I give the privileges to
the database without having to know the specific tables.

The grant command when applied to a database simply mentions CREATE so
the user can create tables. But when applied to tables, where I can
specify specific privileges I need to know the table...

If I'd need to define a user with SELECT privileges to all tables in
my test database, how could I do that?

A simple example would be fine.

Show quoted text

On 12/23/05, Peter Eisentraut <peter_e@gmx.net> wrote:

Am Freitag, 23. Dezember 2005 22:06 schrieb robert mena:

GRANT CREATE,REFERENCES ON DATABASE test TO testadm;

\z
Access privileges for database "test"
Schema | Name | Type | Access privileges
--------+------+------+-------------------

How can I specify that the user testadm can perform those actions to this
database?

For one thing, the command \z shows table privileges, so the empty table
above
is not surprising. pg_database would give you better information.

Second, the privilege type REFERENCES does not exist for databases, only for
tables, so the command you executed does not make sense.

I suggest you peruse the GRANT manual page again.

#5Bruno Wolff III
bruno@wolff.to
In reply to: robert mena (#4)
Re: newbie : setting access for users in a web enviroment

On Sat, Dec 24, 2005 at 08:41:49 -0400,
robert mena <robert.mena@gmail.com> wrote:

If I'd need to define a user with SELECT privileges to all tables in
my test database, how could I do that?

You can't. You can write a script that will give them access to all of the
tables that currently exist. But if you create new ones, they won't get any
access by default to the new tables.