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?

utilisateur
la source
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);
Vidul
la source
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;
Denys Séguret
la source
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