Comment créer un utilisateur pour une base de données en postgresql? [fermé]


199

J'ai installé PostgreSQL 8.4 sur mon serveur CentOS et connecté à l'utilisateur root à partir du shell et accédant au shell PostgreSQL.

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

En essayant de me connecter à partir de mon script PHP, cela me montre que l'authentification a échoué.

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


quel est exactement le message d'erreur? pouvez-vous vous connecter via psqlla ligne de commande?
— a_horse_with_no_name

25
Comment diable cela a-t-il pu être fermé comme hors sujet?
— Ben Creasy

@BenCreasy peut-être parce qu'il est plus approprié pour serverfault.com ou superutilisateur?
— knocte

2
@knocte donc je suppose que vous dites qu'il tombe sous 6, à l'exception "à moins qu'ils n'impliquent directement des outils de programmation ou de programmation", et je suppose que postgres ne compte pas comme un outil de programmation? prise intéressante
— Ben Creasy

Réponses:


339

De 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 (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);

14
Pour Ubuntu, cela devrait êtresudo su - postgres
— Hengjie

57
Pour Ubuntu, cela devrait vraiment être: sudo -u postgres psql
— Mario

2
Je pense que la façon la plus portable d'émettre les commandes serait:psql -U postgres -c "CREATE ROLE..."
— Hugo Mota

31
N'oubliez pas que toutes les choses que vous tapez et exécutez dans le shell se retrouvent généralement dans l'historique du shell, y compris le mot de passe que vous avez choisi.
— amn

7
remarquez la différence entre 'et "dans les commandes!
— andilabs

42

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;

1
Je l'ai déjà fait: créer un utilisateur ravi avec le mot de passe 'ravi'; accorder tous les privilèges sur la base de données nominative à ravi; Mais je ne peux pas me connecter avec le code PHP suivant: <? Php $ connString = 'host = localhost port = 5432 dbname = nominatim user = ravi password = ravi'; $ connHandler = pg_connect ($ connString); echo 'Connecté à' .pg_dbname ($ connHandler); ?>

@Darji Krunal: quelle est l'erreur PHP, à quoi ressemble-t-elle?
— Vidul

1
accorder tous les privilèges * ...
— Arpit Singh
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.