2010-01-31 11 views

Antwort

59

Es gibt zwei Methoden, die Sie verwenden können. Beide erfordern die Erstellung eines Benutzers und einer Datenbank.

  1. Mit AngelegtVon und createdb,

    $ sudo -u postgres createuser -s $USER 
    $ createdb mydatabase 
    $ psql -d mydatabase 
    
  2. Mit Hilfe der SQL Verwaltungsbefehle, und mit einem Passwort über TCP Verbindungs ​​

    $ sudo -u postgres psql postgres 
    

    Und dann in der psql Schale

    CREATE ROLE myuser LOGIN PASSWORD 'mypass'; 
    CREATE DATABASE mydatabase WITH OWNER = myuser; 
    

    Dann melde dich Sie können

    $ psql -h localhost -d mydatabase -U myuser -p <port> 
    

    Wenn Sie den Port nicht kennen, können Sie es immer erhalten, indem die folgenden ausgeführt wird, als postgres Benutzer,

    SHOW port; 
    

    Oder

    $ grep "port =" /etc/postgresql/*/main/postgresql.conf 
    

Benutzer: postgres Benutzer

Ich empfehle NICHT Benutzer postgres ändern.

  1. Es ist normalerweise vom Betriebssystem gesperrt. Niemand sollte sich als postgres beim Betriebssystem anmelden. Du solltest root haben, um dich als postgres zu authentifizieren.
  2. Es ist normalerweise nicht passwortgeschützt und delegiert an das Host-Betriebssystem. Dies ist eine gute Sache. Das bedeutet normalerweise, dass Sie, um sich als postgres einzuloggen, welches das PostgreSQL-Äquivalent von SQL Server SA ist, Schreibzugriff auf die zugrunde liegenden Datendateien haben müssen. Und das bedeutet, dass du normalerweise Chaos ruinieren könntest.
  3. Wenn Sie diese Option deaktivieren, entfernen Sie das Risiko eines Brute-Force-Angriffs durch einen benannten Super-Benutzer. Das Verbergen und Verdunkeln des Superuser-Namens hat Vorteile.
+0

Ich verstehe, dass die Probleme nicht auftreten, wenn Sie einen DB-Superuser (-s) anstelle eines Nicht-Superusers verwenden. Nächste Frage wäre für mich, was getan werden kann, um das zu erreichen, auch wenn der DB-Benutzer kein Super-User ist. – Hartmut

29

standardmäßig würden Sie die Postgres Benutzer verwenden müssen:

sudo -u postgres psql postgres 
+0

danke. Ich bin in, aber ich bin nicht als Ubuntu-Benutzer (Name) angemeldet, oder? – user61734

+0

@ user61734 Danke für mich gearbeitet. – sayth

10

Der Fehler Ihr bekommen ist, weil Ihr-ubuntu-Benutzernamen keine gültige Postgres Benutzer ist.

Sie müssen psql sagen, was Datenbank Benutzernamen

verwenden
psql -U postgres 

Sie auch die Datenbank angeben müssen kann

psql -U postgres -d <dbname> 
+0

Ich versuchte "psql -U Postgres", bekam den gleichen Fehler. Ich habe noch keine Datenbank erstellt, nur eine Neuinstallation vorgenommen. – user61734

+0

'psql -U myuser -d mydb' funktioniert perfekt, während' psql -U myuser' versucht, Peer-Auth zu verwenden, danke! – inf3rno

3

Wenn Ihre Datenbank-Client eine Verbindung mit TCP/IP und Sie verbinden Wenn ident auth in Ihrer pg_hba.conf konfiguriert ist, überprüfen Sie, ob Sie ein identd installiert haben und laufen. Dies ist obligatorisch, auch wenn Sie nur lokale Clients haben, die sich mit "localhost" verbinden.

Beachten Sie auch, dass die Identd möglicherweise IPv6 enabled für Postgresql sein muss, um Clients zu begrüßen, die eine Verbindung zu localhost herstellen.

1

Sie können auch auf der Datenbank als "normaler" Benutzer (nicht Postgres) anschließen:

postgres=# \connect opensim Opensim_Tester localhost; 

Password for user Opensim_Tester:  

You are now connected to database "opensim" as user "Opensim_Tester" on host "localhost" at port "5432" 
Verwandte Themen