Windows Installations Problem mit locales

Mahlzeit!

Ich wollte mir eigentlich nur schnell ein CMS unter PG auf Windows anschauen bevor ich mir die DB und das CMS unter Debian installiere. Vermutlich wäre es unter dem Linux ruck zuck erledigt. :p Na egal. :smiley: Ich habe die folgende Fehlermeldung:

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 German_Germany.1252.

fixing permissions on existing directory D:/Dokumente und Einstellungen/Apache/PostgresSQL/data … ok
creating subdirectories … initdb: invalid locale name “German_Germany.65001”
initdb: invalid locale name “German_Germany.65001”
initdb: invalid locale name “German_Germany.65001”
initdb: invalid locale name “German_Germany.65001”
initdb: invalid locale name “German_Germany.65001”
initdb: invalid locale name “German_Germany.65001”
initdb: could not create directory “D:/Dokumente und Einstellungen/Apache/PostgresSQL”: File exists
initdb: removing contents of data directory “D:/Dokumente und Einstellungen/Nutzer1/PostgresSQL/data”

Die hier im Forum beschriebene Installationsanleitung habe ich nur in sofern abgeändert, daß ich unter locales und encoding jeweils UTF-8 eingegeben habe. Mit C und einem dieser fast schon historischen Microsoft Zeichensätze ergibt es aber die gleiche Fehlermeldung.

Habe Win2000 SP4. Ich war als Admin eingeloggt.

Kann jemand etwas mit dem Fehler anfangen?

Hallo asdfgqw,

da das Installations-Paket eindeutig eine spezielle Version des Lieferanten des CMS ist, solltest Du dich an den Lieferanten wenden. Eindeutig ist auch, dass die Locale “German_Germany.65001” nicht existiert.

Die hier im Forum beschriebene Installationsanleitung bezieht sich auf das Original-PostgreSQL-Paket unter Windows und die Installation des Paketes hat unter den vorgegeben Windows-Betriebssystemen bisher immer funktioniert. Gegenteiliges konnte bisher nicht nachgewiesen werden.

Dass allerdings unter LINUX ein entsprechendes fehlerhaftes Installationsscript eine fehlerfreie Installation ausführt muss wohl noch bewiesen werden.



mfg

fristo

Ne, da hast Du mich missverstanden. Ich wollte eine CMS testen die nur mit Postgres läuft. Die CMS habe ich noch gar nicht installiert. Das Postgres.zip stammt direkt von der Postgres Seite. Ich wüßte gar nicht das es kommerzielle Versionen gibt? :confused:

Bei mir laufen ansonsten alle üblichen Datenbanken. Selbst die neue von SUN läuft auf meinem Windows. Kann es sein das ich irgend einen notwendigen Dienst abgeschaltet habe? Der Dienst “run as” war zum Beispiel aus Sicherheitsgründen abgeschaltet. Postgres braucht das aber offensichtlich für seinen User. MySQL nicht!

Zum dem Locales Problem gibt es hier einen Eintrag http://archives.postgresql.org/pgsql-hackers-win32/2004-11/msg00062.php

Mit welcher Locales bzw. Encoding soll den Postgres unter Windows üblicherweise laufen? UTF-8 ist doch weit verbreitet. Oder etwa nicht unter Windows Postgres Usern mit deutschem Personalausweis?

Möglicherweise, ja. PG läuft unter einem eigenen Account. Was auch noch sein kann: Windoze hat wohl mit einigen locale-Werten wie z.B. UTF-8 Probleme. Wenn Du das nur mal kurz unter Fenster testen willst, dann versuch es vielleicht der Einfachkeit halber mit plain ASCII.

Andreas

Hallo asdfgqw,

was mich zu der Feststellung bewegt ist diese Pfadangabe:

fixing permissions on existing directory D:/Dokumente und Einstellungen/Apache/PostgresSQL/data

Unter WinXP lautet dieser Pfad:

D:/Programme/PostgresSQL/\data

Zusätzlich gibt es auch noch ein Verzeichnis

D:/Dokumente und Einstellungen//PostgresSQL/

in dem aber nur spezielle conf-Dateien abgelegt werden,

sowie das Verzeichnis

D:/Dokumente und Einstellungen/postgres

für den User, mit dem die PostgreSQL-Serverdienste gestartet werden.



PostgreSQL unterscheidet zwischen Client- und Server-Encoding. Die Server-Encoding ist der Zeichensatz, mit dem PostgreSQL (-Server) intern arbeitet. Die Client-Encoding ist der Zeichensatz der Ebene, von dem man die Daten zum Server sendet. Zwischen Client und Server gibt es immer eine Konvertierung-Funktion. Welche Konvertierungen zwischen Client und Server und umgekehrt möglich sind, kannst Du in der Doku in der “Table 9-7. Built-in Conversions” nachlesen.

Bei der Installation entspricht LOCALE der Client-ENCODING. Hier sollte unter Windows immer “C” oder “Win1252”, der Zeichesatz, mit dem Windows arbeitet, stehen (Du hast hier u.a UTF8 angeben). UTF8 im Feld Encoding ist immer richtig, das UTF8 alle Zeichen enthält.

Versuch nochmals die Installation mit den angegeben Daten. Wichtig ist auch, das der Administrator keine Einschränkungen der Rechte besitzt. Zudem sollten die aktuellen Update installiert sein. Um eine saubere Installationbasis zu haben, solltest Du den Beitrag Entfernen (De-Installation) von PostgreSQL unter Windows duchlesen und die entsprechenden Verzeichnisse löschen. Ist unbedingt wichtig!

Übrigens, ich konnte die neueste Version von PostgreSQL mit den oben angegeben Daten unter WinXP ohne Probleme installieren!



mfg

fristo

So, ich habe es installiert bekommen.

Bei meiner ersten Installation bzw. den weiteren Fehlversuchen habe ich Postgres als Administrator in die Verzeichnisse eines Useraccounts installiert. Das ist der Weg den jemand beschreiten müßte, wenn er sich einen Webserver auf Windows Basis mit Postgres Unterstützung installieren wollte und Sicherheit will.

Das mag offenbar Postgres nicht.

Daher habe ich es jetzt als Administrator in die üblichen Verzeichnisse installieren lassen. Das ist aber der falsche Weg. Jemand der jetzt die Datenbank hacken will, kann das relativ ungehindert mit den notwendigen Scripten erledigen. Dazu ist Windows einfach zu löchrig. Ich darf nur daran erinnern auf welch simple Natur ein Windows seine Passwörter abspeichert. Ja, es gibt Möglichkeiten das zu verschärfen, aber die sind harmlos.

Müßte ich jetzt noch irgendwo Hand an legen, damit mir Postgres Logs erstellt und den Content wirklich in UTF-8 bearbeitet?

Gibt es vielleicht irgendwo ein Script um unter Windows ein Backup jeder einzelnen angelegten Datenbank zu machen?

Danke für die Hilfe! :p

Hallo asdfgqw,



  • Es gibt kein Betriebssystem, welches 100% Sicherheit bietet!
  • Es gibt für jedes Betriebssystem Programme, die Passwörter cracken. Damit sind andere Betriebssysteme ebenso sicher oder unsicher wie Windows.
  • PostgreSQL ist eine Datenbank und kein Firewall.
  • Nach der Installation wird der Server unter dem User “postgres” (Standardvorgabe) gestartet.
  • Auf alle wichtigen Dateien und Verzeichnisse haben nur der User “postgres”, der Administrator und das System Zugriff.
  • Man kann die eigentliche Datenbank, Verzeichnis “data”, auch unter einen anderen User installieren (siehe Doku). Es bringt aber nicht mehr Sicherheit, da die vorgenannten User immer Zugriff auf die Daten haben müssen.
  • Es gibt Provider, die PostgreSQL als Webserver anbieten. Sollten die vorhandenen Protokolle nicht Deinen Sicherheitsvorstellungen entsprechen, hast Du die Möglichkeit Deine eigenen Protokolle zu implementieren. Den Source-Code kann man herunterladen.


Welche Logs?
Wenn bei der Erzeugung der Datenbank als SERVER-ENCODING UTF-8 vorgegeben worden ist, werden die Daten im Server im Zeichensatz UTF-8 gespeichert. Bezüglich der SQL-Befehle und der vorhandenen Programmiersprachen gibt es keine Einschränkung.


Die Kommandozeilenversion nennt sich pg_dump… . Siehe Doku.





mfg

fristo