229 votes

Comment créer un utilisateur pour une base de données dans postgresql ?

J'ai installé PostgreSQL 8.4 sur mon serveur CentOS et je me suis connecté à l'utilisateur Root depuis le shell et j'accède au shell PostgreSQL.

J'ai créé la base de données et l'utilisateur dans PostgreSQL.

En essayant de se connecter à partir de mon script PHP, il me montre un échec d'authentification.

Comment créer un nouvel utilisateur et comment lui accorder des permissions pour une BD particulière ?

375voto

Depuis l'interface CLI :

$ su - postgres 
$ psql template1
template1=# CREATE USER tester WITH PASSWORD 'test_password';
template1=# GRANT ALL PRIVILEGES ON DATABASE "test_database" to tester;
template1=# \q

PHP (tel que testé sur localhost, il fonctionne comme prévu) :

  $connString = 'port=5432 dbname=test_database user=tester password=test_password';
  $connHandler = pg_connect($connString);
  echo 'Connected to '.pg_dbname($connHandler);

50voto

dystroy Points 145126

Créez l'utilisateur avec un mot de passe :

http://www.postgresql.org/docs/current/static/sql-createuser.html

CREATE USER name [ [ WITH ] option [ ... ] ]

where option can be:

      SUPERUSER | NOSUPERUSER
    | CREATEDB | NOCREATEDB
    | CREATEROLE | NOCREATEROLE
    | CREATEUSER | NOCREATEUSER
    | INHERIT | NOINHERIT
    | LOGIN | NOLOGIN
    | REPLICATION | NOREPLICATION
    | CONNECTION LIMIT connlimit
    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'
    | VALID UNTIL 'timestamp'
    | IN ROLE role_name [, ...]
    | IN GROUP role_name [, ...]
    | ROLE role_name [, ...]
    | ADMIN role_name [, ...]
    | USER role_name [, ...]
    | SYSID uid

Ensuite, accordez à l'utilisateur des droits sur une base de données spécifique :

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

Exemple :

grant all privileges on database db_name to someuser;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X