Wie erstelle ich einen Benutzer für eine Datenbank in postgresql? [geschlossen]

199

Ich habe PostgreSQL 8.4 auf meinem CentOS-Server installiert und über die Shell eine Verbindung zum Root-Benutzer hergestellt und auf die PostgreSQL-Shell zugegriffen.

Ich habe die Datenbank und den Benutzer in PostgreSQL erstellt.

Beim Versuch, eine Verbindung über mein PHP-Skript herzustellen, wird angezeigt, dass die Authentifizierung fehlgeschlagen ist.

Wie erstelle ich einen neuen Benutzer und wie erteile ich ihm Berechtigungen für eine bestimmte Datenbank?

Benutzer
quelle
Was genau ist die Fehlermeldung? Können Sie sich über psqldie Befehlszeile anmelden ?
a_horse_with_no_name
24
Wie in aller Welt wurde dies als Off-Topic geschlossen?
Ben Creasy
@ BenCreasy vielleicht, weil es besser für serverfault.com oder Superuser geeignet ist?
Knocte
2
@knocte Ich nehme an, Sie sagen, es fällt unter 6, was die Ausnahme hat "es sei denn, es handelt sich direkt um Programmier- oder Programmierwerkzeuge", und ich nehme an, Postgres zählt nicht als Programmierwerkzeug? interessante
Ben Creasy

Antworten:

339

Von der 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 (wie auf localhost getestet, funktioniert es wie erwartet):

  $connString = 'port=5432 dbname=test_database user=tester password=test_password';
  $connHandler = pg_connect($connString);
  echo 'Connected to '.pg_dbname($connHandler);
Vidul
quelle
14
Für Ubuntu sollte es seinsudo su - postgres
Hengjie
57
Für Ubuntu sollte es wirklich sein: sudo -u postgres psql
Mario
2
Ich denke, der tragbarste Weg, die Befehle auszugeben, wäre:psql -U postgres -c "CREATE ROLE..."
Hugo Mota
31
Denken Sie daran, dass alle Inhalte, die Sie in die Shell eingeben und ausführen, normalerweise im Shell-Verlauf landen, einschließlich des von Ihnen gewählten Kennworts.
Amn
7
Beachten Sie den Unterschied zwischen 'und "in Befehlen!
Andilabs
42

Erstellen Sie den Benutzer mit einem Passwort:

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

Gewähren Sie dann die Benutzerrechte für eine bestimmte Datenbank:

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

Beispiel:

grant all privileges on database db_name to someuser;
Denys Séguret
quelle
1
Ich habe dies bereits getan: Benutzer ravi mit Passwort 'ravi' erstellen; Gewähren Sie Ravi alle Berechtigungen für die Datenbank nominatim. Ich kann mich jedoch nicht mit folgendem PHP-Code verbinden: <? Php $ connString = 'host = localhost port = 5432 dbname = nominatim user = ravi password = ravi'; $ connHandler = pg_connect ($ connString); echo 'Verbunden mit' .pg_dbname ($ connHandler); ?>
@Darji Krunal: Wie ist der PHP-Fehler, wie sieht er aus?
Vidul
1
gewähren alle Privilegien * ...
Arpit Singh