Come creare un utente per un db in postgresql? [chiuso]


199

Ho installato PostgreSQL 8.4 sul mio server CentOS e mi sono connesso all'utente root dalla shell e accedendo alla shell PostgreSQL.

Ho creato il database e l'utente in PostgreSQL.

Durante il tentativo di connettersi dal mio script PHP mi mostra che l'autenticazione non è riuscita.

Come faccio a creare un nuovo utente e come concedere le autorizzazioni per un determinato DB?


qual è esattamente il messaggio di errore? puoi accedere psqldalla riga di comando?
a_horse_with_no_name

25
In che modo questo è stato chiuso come fuori tema?
Ben Creasy,

@BenCreasy forse perché è più appropriato per serverfault.com o superutente?
Knocte,

2
@knocte quindi suppongo che tu stia dicendo che cade sotto il 6 che ha l'eccezione "a meno che non coinvolgano direttamente strumenti di programmazione o di programmazione", e suppongo che Postgres non contasse come strumento di programmazione? take interessante
Ben Creasy,

Risposte:


339

Dalla 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 (come testato su localhost, funziona come previsto):

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

14
Per Ubuntu dovrebbe esseresudo su - postgres
Hengjie,

57
Per Ubuntu dovrebbe essere davvero: sudo -u postgres psql
Mario

2
Penso che il modo più portatile per emettere i comandi sarebbe:psql -U postgres -c "CREATE ROLE..."
Hugo Mota

31
Ricorda solo che tutto ciò che digiti ed esegui nella shell di solito finisce nella cronologia della shell, inclusa la password scelta.
AMN

7
notare la differenza tra 'e "nei comandi!
Andilab

42

Crea l'utente con una password:

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

Quindi concedere i diritti utente su un database specifico:

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

Esempio :

grant all privileges on database db_name to someuser;

1
Ho già fatto questo: creare un utente ravi con password 'ravi'; concedere tutti i privilegi sul database nominatim a ravi; Ma non riesco a collegarmi con il seguente codice PHP: <? Php $ connString = 'host = localhost port = 5432 dbname = nominatim user = ravi password = ravi'; $ connHandler = pg_connect ($ connString); echo 'Connected to' .pg_dbname ($ connHandler); ?>

@Darji Krunal: qual è l'errore PHP, come si presenta?
Vidul,

1
concedi tutti i privilegi * ...
Arpit Singh,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.