web-dev-qa-db-fra.com

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

J'ai installé PostgreSQL 8.4 sur mon serveur CentOS et me suis connecté à l'utilisateur root à partir de Shell pour accéder à Shell PostgreSQL.

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

Lors de la tentative de connexion à partir de mon script PHP, l'authentification a échoué.

Comment créer un nouvel utilisateur et comment leur accorder des autorisations pour une base de données particulière?

184
user925355

De la 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);
311
Vidul

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

Accordez ensuite les droits d'utilisateur 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;
40
Denys Séguret