Hoe maak je een gebruiker voor een db in postgresql?

Ik heb PostgreSQL 8.4 op mijn CentOS-server geïnstalleerd en heb verbinding gemaakt met de rootgebruiker vanuit de shell en heb toegang tot de PostgreSQL-shell.

Ik heb de database en gebruiker gemaakt in PostgreSQL.

Terwijl ik probeer verbinding te maken vanuit mijn PHP-script, krijg ik te zien dat authenticatie is mislukt.

Hoe maak ik een nieuwe gebruiker aan en hoe kan ik deze machtigingen verlenen voor een bepaalde DB?


Antwoord 1, autoriteit 100%

Van 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 (zoals getest op localhost, het werkt zoals verwacht):

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

Antwoord 2, autoriteit 13%

Maak de gebruiker met een wachtwoord :

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

Verleen vervolgens de gebruikersrechten op een specifieke database:

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

Voorbeeld:

grant all privileges on database db_name to someuser;

Other episodes