Re: Post Install / Secure PostgreSQL - Mailing list pgsql-general

From Craig Ringer
Subject Re: Post Install / Secure PostgreSQL
Date
Msg-id 4C900C7D.7030103@postnewspapers.com.au
Whole thread Raw
In response to Re: Post Install / Secure PostgreSQL  (Carlos Mennens <carlos.mennens@gmail.com>)
Responses Re: Post Install / Secure PostgreSQL  (Carlos Mennens <carlos.mennens@gmail.com>)
List pgsql-general
On 15/09/2010 12:50 AM, Carlos Mennens wrote:
> On Mon, Sep 13, 2010 at 9:58 PM, Craig Ringer
> <craig@postnewspapers.com.au>  wrote:
>> craig$ sudo -u postgres psql
>> postgres=>  CREATE USER craig WITH PASSWORD 'somepassword'
>>            CREATEDB CREATEROLE;
>> postgres=>  CREATE DATABASE craig WITH OWNER craig;
>> postgres=>  \q
>
> So I set a Linux shell password on my newly auto created 'postgres'
> system user

You can do that, though you don't need to. I usually just sudo to it.

> which is what I use to login to the database as
> 'superuser'. Now I know my password for 'postgres' in the Linux shell
> but I still don't understand what the database password is for
> 'postgres'.

You need to read the manual. It explains how authentication and login
roles work. In particular, it explains pg_hba.conf and the "ident",
"trust" and "md5" authentication modes.

http://www.postgresql.org/docs/current/interactive/client-authentication.html

> So maybe I am still lost but it appears that the database user
> 'postgres' has a password unique to PostgreSQL, right?

Correct. However, it doesn't need to have any password at all; if you're
using ident authentication, postgresql will accept a connection as
"postgres" only from the local unix user "postgres". No need for a
password, you've already convinced the OS you have the access rights.

If you're using "md5" (password) authentication, then you need to set a
password for the postgres database user.

See the manual.

> postgres=# SELECT * from pg_user;
>   usename  | usesysid | usecreatedb | usesuper | usecatupd |  passwd  |
> valuntil | useconfig
> ----------+----------+-------------+----------+-----------+----------+----------+-----------
>   postgres |       10 | t           | t        | t         | ******** |
>           |
>   carlos   |    16384 | t           | t        | t         | ******** |
>           |

You'd usually use the psql command:

    \du

for a better view. See:

    \?

in psql

> Obviously there appears to be a specific password for both accounts
> which I think are completely seperate from the Linux shell passwords,
> right?

Correct.

> Secondly I am unable to find any information in the docs that show me
> how to set just the user password for 'carlos'. In MySQL I would use:

ALTER USER username SET PASSWORD 'somepassword';

See the manual, and the psql \h command

    \h               -- statement listing
    \h ALTER USER    -- syntax of alter user

http://www.postgresql.org/docs/current/interactive/sql-alteruser.html

--
Craig Ringer

Tech-related writing at http://soapyfrogs.blogspot.com/

pgsql-general by date:

Previous
From: Tatsuo Ishii
Date:
Subject: Re: pgpool-II 3.0 + postgres 9rc1 + md5 authentication not working
Next
From: David Fetter
Date:
Subject: Re: workaround steps for autovaccum problem