Ergebnis 1 bis 8 von 8

Thema: reinstall PosgresQL - wo ist template0?

  1. #1
    Rolf Tschan ist offline Neuer Benutzer
    Registriert seit
    23.06.2011
    Ort
    Gunten, Bern, Switzerland, Switzerland
    Beiträge
    25

    Standard reinstall PosgresQL - wo ist template0?

    Ich fasse mich kurz: Nachdem ich PostgreSQL einmal installiert, testweise betrieben danach aber wieder deinstalliert hatte, habe ich es kürzlich neu installiert (apt-get). Nun läuft das Ding, doch ich habe keine "template0" Datenbank. Bevor ich eigene DBs anzulegen beginne, möchte ich dies jetzt richtig stellen.

    Frage: Wie kann ich mir "template0" (und "template1") wieder erstellen lassen?

    Das Verzeichnis dafür existiert bereits (/usr/local/pgsql/data...), doch ich habe darin noch nichts Eigenes erstellt. Ich könnte also problemlos riskieren, dieses zu löschen und vollständig neu erstellen zu lassen.

  2. #2
    akretschmer ist gerade online Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.467

    Standard

    Zitat Zitat von Rolf Tschan Beitrag anzeigen
    Ich fasse mich kurz: Nachdem ich PostgreSQL einmal installiert, testweise betrieben danach aber wieder deinstalliert hatte, habe ich es kürzlich neu installiert (apt-get). Nun läuft das Ding, doch ich habe keine "template0" Datenbank. Bevor ich eigene DBs anzulegen beginne, möchte ich dies jetzt richtig stellen.

    Frage: Wie kann ich mir "template0" (und "template1") wieder erstellen lassen?

    Das Verzeichnis dafür existiert bereits (/usr/local/pgsql/data...), doch ich habe darin noch nichts Eigenes erstellt. Ich könnte also problemlos riskieren, dieses zu löschen und vollständig neu erstellen zu lassen.
    Wenn Du weder template0 noch template1 hast, dann wirst Du kaum eigene Datenbanken erstellen können, denn dazu brauchst Du eine templateX - Datenbank oder eine andere, bereits von Dir angelegte. Henne-Ei-Problem.

    Frage: hast Du initdb ausgeführt?


    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    Rolf Tschan ist offline Neuer Benutzer
    Registriert seit
    23.06.2011
    Ort
    Gunten, Bern, Switzerland, Switzerland
    Beiträge
    25

    Standard

    Ich meinte eigentlich: ja - woher sonst sollte das Verzeichnis (und dessen Inhalt) stammen?

    Trotzdem habe ich das jetzt nochmal versucht (erst su postgres, dann):
    Code:
     /usr/lib/postgresql/8.4/bin/initdb -D /usr/local/psql/data
    Der liefert mir jetzt aber:
    Code:
    could not change directory to "/root"
    The files belonging to this database system will be owned by user "postgres".
    This user must also own the server process.
    
    The database cluster will be initialized with locale de_CH.UTF-8.
    The default database encoding has accordingly been set to UTF8.
    The default text search configuration will be set to "german".
    
    creating directory /usr/local/psql/data ... initdb: could not create directory "/usr/local/psql": Keine Berechtigung
    Das Verzeichnis existiert jedoch bereits mit owner "root" und group "postgres". Die darunter liegenden Verzeishnisse /8.4/bin und /8.4/lib ebenfalls.

    Soll ich dieses ganze Verzeichnis erst löschen?

    Übrigens: Die ERSTE Meldung (could not change directory to "/root") kommt mir auch spanisch vor. Woher kommt diese denn? Etwas falsch mit "passwd"? Das sieht bei mir so aus:
    Code:
    postgres:x:108:113:PostgreSQL administrator,,,:/usr/lib/postgresql/8.4/bin:/bin/bash
    Nachtrag: Ich habe das Verzeichnis jetzt gelöscht und (natürlich via user postgres) mittels INITDB neu anlegen lassen. So sieht das aus:

    Code:
    could not change directory to "/root"
    The files belonging to this database system will be owned by user "postgres".
    This user must also own the server process.
    
    The database cluster will be initialized with locale de_CH.UTF-8.
    The default database encoding has accordingly been set to UTF8.
    The default text search configuration will be set to "german".
    
    creating directory /usr/local/psql/data ... ok
    creating subdirectories ... ok
    selecting default max_connections ... 100
    selecting default shared_buffers ... 24MB
    creating configuration files ... ok
    creating template1 database in /usr/local/psql/data/base/1 ... ok
    initializing pg_authid ... ok
    initializing dependencies ... ok
    creating system views ... ok
    loading system objects' descriptions ... ok
    creating conversions ... ok
    creating dictionaries ... ok
    setting privileges on built-in objects ... ok
    creating information schema ... ok
    vacuuming database template1 ... ok
    copying template1 to template0 ... ok
    copying template1 to postgres ... ok
    
    WARNING: enabling "trust" authentication for local connections
    You can change this by editing pg_hba.conf or using the -A option the
    next time you run initdb.
    
    Success. You can now start the database server using:
    
        /usr/lib/postgresql/8.4/bin/postgres -D /usr/local/psql/data
    or
        /usr/lib/postgresql/8.4/bin/pg_ctl -D /usr/local/psql/data -l logfile start
    Trotzdem: Logge ich mich mit phpgAdmin dort ein (nach einem Server-Restart, sicherheitshalber) sehe ich dort nur ein Schema "public" OHNE Tabellen, Sichten, Sequenzen, Funktionen und Domänen. Da sind keine "templates"...
    Geändert von Rolf Tschan (03.10.2011 um 10:41 Uhr)

  4. #4
    Rolf Tschan ist offline Neuer Benutzer
    Registriert seit
    23.06.2011
    Ort
    Gunten, Bern, Switzerland, Switzerland
    Beiträge
    25

    Standard

    Noch ein Nachtrag. Was oben (Meldungen von INITDB) ersichtlich ist, sehe ich auch hier:

    Code:
    postgres@nas:/root$ psql -l
    could not change directory to "/root"
                                      List of databases
       Name    |  Owner   | Encoding |  Collation  |    Ctype    |   Access privileges
    -----------+----------+----------+-------------+-------------+-----------------------
     postgres  | postgres | UTF8     | de_CH.UTF-8 | de_CH.UTF-8 |
     template0 | postgres | UTF8     | de_CH.UTF-8 | de_CH.UTF-8 | =c/postgres
                                                                 : postgres=CTc/postgres
     template1 | postgres | UTF8     | de_CH.UTF-8 | de_CH.UTF-8 | =c/postgres
                                                                 : postgres=CTc/postgres
    (3 rows)
    1. Mich irritiert noch immer die erste Fehlermeldung bzgl. "root". Was soll das?

    2. WO LIEGT diese Datenbank und wo sind diese (frisch angelegten) Templates?

  5. #5
    akretschmer ist gerade online Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.467

    Standard

    Zitat Zitat von Rolf Tschan Beitrag anzeigen
    Noch ein Nachtrag. Was oben (Meldungen von INITDB) ersichtlich ist, sehe ich auch hier:

    Code:
    postgres@nas:/root$ psql -l
    could not change directory to "/root"
                                      List of databases
       Name    |  Owner   | Encoding |  Collation  |    Ctype    |   Access privileges
    -----------+----------+----------+-------------+-------------+-----------------------
     postgres  | postgres | UTF8     | de_CH.UTF-8 | de_CH.UTF-8 |
     template0 | postgres | UTF8     | de_CH.UTF-8 | de_CH.UTF-8 | =c/postgres
                                                                 : postgres=CTc/postgres
     template1 | postgres | UTF8     | de_CH.UTF-8 | de_CH.UTF-8 | =c/postgres
                                                                 : postgres=CTc/postgres
    (3 rows)
    1. Mich irritiert noch immer die erste Fehlermeldung bzgl. "root". Was soll das?

    2. WO LIEGT diese Datenbank und wo sind diese (frisch angelegten) Templates?
    1. kann ich Dir nicht sagen.

    2.

    der physische Speicherort kann eigentlich egal sein. Die Datenbanken (templateX sind Datenbanken) liegen unterhalb von $data_directory/base in ordnern, die mit Zahlen benannt sind. Was wo liegt, bekommst Du aus der Tabelle pg_database raus:

    Code:
    test=*# select oid, datname from pg_database ;
      oid  |  datname
    -------+-----------
         1 | template1
     12690 | template0
     12698 | postgres
     16385 | test
    (4 rows)
    Die Spalte "oid" ist dabei der Name des Ordners.

    Aber, wie gesagt, der physische Speicherort kann Dir eigentlich egal sein...


    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  6. #6
    Rolf Tschan ist offline Neuer Benutzer
    Registriert seit
    23.06.2011
    Ort
    Gunten, Bern, Switzerland, Switzerland
    Beiträge
    25

    Standard

    Hmmm... Also die Templates existieren. INITDB hat sie "nachweislich" erstellt und ich sehe sie auch in /usr/local/psql/data/base/...(nummern). Soweit sieht das IMO ok aus.

    Jetzt aber wird's komisch:

    Code:
    postgresql status
    --liefert-->
    Running clusters: 8.4/main
    ...
    Die Clusters sind doch nicht DORT, sondern - siehe oben: in /usr/local/...

    Mir scheint, dass da irgendeine Config schief ist. Doch WELCHE Config? Die von postgresql oder die vom Admin?

    Ich würde jetzt gerne erst mal die von postgresql verifizieren:

    a) Weshalb zeigt mit Status diesen (IMO falschen) Cluster an?

    b) Kann ich einen geeigneten SQL-Befehl absetzen, der mir mit Sicherheit anzeigt, ob PG korrekt (mit den neu angelegten templates) funktioniert?

    Übrigens: Auch dies wird bei mir korrekt angezeigt:
    Code:
    postgres=# select oid, datname from pg_database ;
      oid  |  datname
    -------+-----------
         1 | template1
     11563 | template0
     11564 | postgres
    (3 rows)
    Geändert von Rolf Tschan (04.10.2011 um 13:07 Uhr)

  7. #7
    akretschmer ist gerade online Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.467

    Standard

    Zitat Zitat von Rolf Tschan Beitrag anzeigen
    Hmmm... Also die Templates existieren. INITDB hat sie "nachweislich" erstellt und ich sehe sie auch in /usr/local/psql/data/base/...(nummern). Soweit sieht das IMO ok aus.

    Jetzt aber wird's komisch:

    Code:
    postgresql status
    --liefert-->
    Running clusters: 8.4/main
    ...
    Die Clusters sind doch nicht DORT, sondern - siehe oben: in /usr/local/...

    Mir scheint, dass da irgendeine Config schief ist. Doch WELCHE Config? Die von postgresql oder die vom Admin?

    Ich würde jetzt gerne erst mal die von postgresql verifizieren:

    a) Weshalb zeigt mit Status diesen (IMO falschen) Cluster an?

    b) Kann ich einen geeigneten SQL-Befehl absetzen, der mir mit Sicherheit anzeigt, ob PG korrekt (mit den neu angelegten templates) funktioniert?

    Übrigens: Auch dies wird bei mir korrekt angezeigt:
    Code:
    postgres=# select oid, datname from pg_database ;
      oid  |  datname
    -------+-----------
         1 | template1
     11563 | template0
     11564 | postgres
    (3 rows)
    psql -c "show data_directory" template1

    Das zeigt Dir an, wo data_dir liegt. Wo das ist, wird mit der postgresql.conf oder aber beim Start des Servers via -D festgelegt.


    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  8. #8
    Rolf Tschan ist offline Neuer Benutzer
    Registriert seit
    23.06.2011
    Ort
    Gunten, Bern, Switzerland, Switzerland
    Beiträge
    25

    Standard

    Ja, der zeigt mir genau das an, was eben gerade nicht stimmt:

    Code:
    postgres@nas:/root$ psql -c "show data_directory" template1
    could not change directory to "/root"
            data_directory
    ------------------------------
     /var/lib/postgresql/8.4/main
    (1 row)
    Dort liegen schon auch Datenbanken; doch ich habe keine Ahnung WESHALB. Jedenfalls: Dort WILL ICH SIE NICHT :-)

    Wie kommt der auf diese Idee? Welche Config nimmt der denn, wenn er "auto-gestartet" wird? Wie kann ich das verifizieren? (jene im data-Verzeichnis kann er ja erst dann berücksichtigen, wenn er weiss, welches das data-Verzeichnis ist)

    Ausserdem: Ich habe PG eben gestoppt und manuell mit "-D /usr/local/psql/data" neu gestartet. Doch in PhpPgAdmin hat sich dadurch gar nichts geändert.

    Übrigens: Kann mir jemand die Zeile für "postgres" aus "password" zeigen? Meine sieht so aus - ist das korrekt (und sinnvoll)?
    Code:
    postgres:x:108:113:PostgreSQL administrator,,,:/usr/lib/postgresql/8.4/bin:/bin/bash
    Geändert von Rolf Tschan (04.10.2011 um 14:03 Uhr)

Ähnliche Themen

  1. [News]: PosgreSQL 8.3.1, 8.2.7 Update Release
    Von Xandrian im Forum Neuigkeiten & Ankündigungen
    Antworten: 0
    Letzter Beitrag: 19.03.2008, 00:35
  2. [News]: Lightning Admin for Posgresql version 1.3.4.23 Released
    Von Xandrian im Forum Neuigkeiten & Ankündigungen
    Antworten: 0
    Letzter Beitrag: 24.01.2007, 11:37

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum