Re: Erlaubte Zeichen in Datenbanknamen

Lists: pgsql-de-allgemein
From: udono <udono(at)gmx(dot)net>
To: "pgsql-de-allgemein(at)postgresql(dot)org" <pgsql-de-allgemein(at)postgresql(dot)org>
Subject: Erlaubte Zeichen in Datenbanknamen
Date: 2008-08-01 15:45:43
Message-ID: 48932FA7.5000103@gmx.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

Hallo,
für das open source ERP Tryton (www.tryton.org) möchte ich gern
Benutzereingaben schon während der Eingabe prüfen.

Wie genau ist der Name einer Postgresdatenbank aufgebaut?
Folgendes habe ich schon herausgefunden:
Länge: maximal 63 Zeichen
Erlaubte Zeichen: Alpha-Nummerisch und Unterstrich (_)
Name muss mit einem Buchstaben beginnen.

Gibt es noch weitere erlaubte Zeichen oder andere Sachen die ich bei
der Prüfung beachten muss?

Viele Grüße

Udo Spallek


From: "A(dot) Kretschmer" <andreas(dot)kretschmer(at)schollglas(dot)com>
To: pgsql-de-allgemein(at)postgresql(dot)org
Subject: Re: Erlaubte Zeichen in Datenbanknamen
Date: 2008-08-01 17:15:12
Message-ID: 20080801171512.GA9608@a-kretschmer.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

am Fri, dem 01.08.2008, um 17:45:43 +0200 mailte udono folgendes:
> Hallo,
> für das open source ERP Tryton (www.tryton.org) möchte ich gern
> Benutzereingaben schon während der Eingabe prüfen.
>
> Wie genau ist der Name einer Postgresdatenbank aufgebaut?
> Folgendes habe ich schon herausgefunden:
> Länge: maximal 63 Zeichen
> Erlaubte Zeichen: Alpha-Nummerisch und Unterstrich (_)
> Name muss mit einem Buchstaben beginnen.
>
> Gibt es noch weitere erlaubte Zeichen oder andere Sachen die ich bei
> der Prüfung beachten muss?

IIRC nicht, aber ich versteh nicht ganz, warum Du den Namen einer DB als
Benutzereingabe prüfen willst/mußt. Der DB-Name ist doch eher, ähm,
statisch.

Andreas
--
Andreas Kretschmer
Kontakt: Heynitz: 035242/47150, D1: 0160/7141639 (mehr: -> Header)
GnuPG-ID: 0x3FFF606C, privat 0x7F4584DA http://wwwkeys.de.pgp.net


From: udono <udono(at)gmx(dot)net>
To: pgsql-de-allgemein(at)postgresql(dot)org
Subject: Re: Erlaubte Zeichen in Datenbanknamen
Date: 2008-08-02 15:23:00
Message-ID: 48947BD4.8000508@gmx.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

Hallo Andreas,

A. Kretschmer schrieb:
>> Gibt es noch weitere erlaubte Zeichen oder andere Sachen die ich bei
>> der Prüfung beachten muss?
> IIRC nicht, aber ich versteh nicht ganz, warum Du den Namen einer DB als
> Benutzereingabe prüfen willst/mußt. Der DB-Name ist doch eher, ähm,
> statisch.
Ja, bei der Software handelt es sich um ein ERP (Enterprice Resource
Planning) Tool für kleine und mittelgroße Unternehmen.
Wenn man eine neue einzelne Firma anlegt, dann werden alle Daten in
eine Postgresdatenbank eingefügt. Deren Name muss der Administrator
angeben um sie neu erstellen zu lassen. Wir haben diesen Dialog in
das GUI gelegt, um die Konfiguration zu vereinfachen.
Bei der Eingabe des Datenbank-Namens wird gleich auf Validität
geprüft. (Also es sind nur alpha-nummerische Zeichen erlaubt und
Unterstrich, das erste Zeichen muss ein Buchstabe sein, die Anzahl
der eingegebenen Zeichen ist auf 63 begrenzt.) Quasi
Fehlervermeidung, statt Fehlermeldung...

Viele Grüße
Udo Spallek


From: "Albe Laurenz" <laurenz(dot)albe(at)wien(dot)gv(dot)at>
To: "udono *EXTERN*" <udono(at)gmx(dot)net>, <pgsql-de-allgemein(at)postgresql(dot)org>
Subject: Re: Erlaubte Zeichen in Datenbanknamen
Date: 2008-08-04 07:05:16
Message-ID: D960CB61B694CF459DCFB4B0128514C2025C3EF9@exadv11.host.magwien.gv.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

udono schrieb:
>>> Gibt es noch weitere erlaubte Zeichen oder andere Sachen die ich bei
>>> der Prüfung beachten muss?

Ich glaube, Deine Beschreibung (63 alphanumerische Zeichen) ist nicht
korrekt: es sind 64 *Bytes* (inklusive dem 0-Byte am Ende), und alle
Zeichen sind möglich.

Siehe bpchar_name in src/backend/utils/adt/varchar.c.

Allerdings ist es intelligent, die Eingabe auf Kleinbuchstaben, Ziffern und
Unterstriche zu beschränken.

>> IIRC nicht, aber ich versteh nicht ganz, warum Du den Namen einer DB als
>> Benutzereingabe prüfen willst/mußt. Der DB-Name ist doch eher, ähm,
>> statisch.
>
> Ja, bei der Software handelt es sich um ein ERP (Enterprice Resource
> Planning) Tool für kleine und mittelgroße Unternehmen.
> Wenn man eine neue einzelne Firma anlegt, dann werden alle Daten in
> eine Postgresdatenbank eingefügt. Deren Name muss der Administrator
> angeben um sie neu erstellen zu lassen. Wir haben diesen Dialog in
> das GUI gelegt, um die Konfiguration zu vereinfachen.
> Bei der Eingabe des Datenbank-Namens wird gleich auf Validität
> geprüft. (Also es sind nur alpha-nummerische Zeichen erlaubt und
> Unterstrich, das erste Zeichen muss ein Buchstabe sein, die Anzahl
> der eingegebenen Zeichen ist auf 63 begrenzt.) Quasi
> Fehlervermeidung, statt Fehlermeldung...

Ein Bedenken gegen das Design möchte ich kundtun:

Das bedeutet, daß das Programm mit einem User mit hohen Privilegien
(CREATEDB oder gar SUPERUSER) an die Datenbank verbunden sein muß.

Vielen Leuten macht das vielleicht nichts aus, aber es gibt Menschen
(und Unternehmen), für die sowas ein Ausschließungsgrund für eine
Software ist.

Warum kann das nicht einfach ein neues Schema statt einer neuen
Datenbank sein?

Liebe Grüße,
Laurenz Albe


From: Susanne Ebrecht <miracee(at)miracee(dot)de>
To: udono <udono(at)gmx(dot)net>
Cc: "pgsql-de-allgemein(at)postgresql(dot)org" <pgsql-de-allgemein(at)postgresql(dot)org>
Subject: Re: Erlaubte Zeichen in Datenbanknamen
Date: 2008-08-04 14:11:42
Message-ID: 48970E1E.3070800@miracee.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

udono wrote:
> Hallo,
> für das open source ERP Tryton (www.tryton.org) möchte ich gern
> Benutzereingaben schon während der Eingabe prüfen.
>
> Wie genau ist der Name einer Postgresdatenbank aufgebaut?
> Folgendes habe ich schon herausgefunden:
> Länge: maximal 63 Zeichen
> Erlaubte Zeichen: Alpha-Nummerisch und Unterstrich (_)
> Name muss mit einem Buchstaben beginnen.
>
> Gibt es noch weitere erlaubte Zeichen oder andere Sachen die ich bei
> der Prüfung beachten muss?

Wenn Du wirklich auf Nummer sicher gehen und nicht das Geheule von Usern
ertragen möchtest, weil sie unterschiedliche Client Encodings zum Login
verwenden und das "ö" dann doch nicht erkannt wird, wie es sollte ....
kann ich Dir raten, prüf noch auf Kleinbuchstaben ... bzw. lasse nur
Kleinbuchstaben zu und keine reserved keywords.

Also nur a-z + 0-9 + Unterstrich ... dann 63 Zeichen Länge, das sollte
reichen.

Damit erreichst Du in jedem Fall, dass kein User sich beklagt, dass das
Login nicht erkannt wird und Du ersparst Dir Zeit und Nerven dauernd den
Usern zu erklären, wie sie Ihr Client-Encoding richtig einstellen.

Viele Grüße

Susanne

--
Susanne Ebrecht
52066 Aachen, Germany
Email: miracee(at)miracee(dot)de


From: udono <udono(at)gmx(dot)net>
To: pgsql-de-allgemein(at)postgresql(dot)org
Subject: Re: Erlaubte Zeichen in Datenbanknamen
Date: 2008-08-10 13:27:11
Message-ID: 489EECAF.9030903@gmx.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

Hallo Laurenz,

Albe Laurenz schrieb:
> udono schrieb:
>>>> Gibt es noch weitere erlaubte Zeichen oder andere Sachen die ich bei
>>>> der Prüfung beachten muss?
> Ich glaube, Deine Beschreibung (63 alphanumerische Zeichen) ist nicht
> korrekt: es sind 64 *Bytes* (inklusive dem 0-Byte am Ende), und alle
> Zeichen sind möglich.
> Siehe bpchar_name in src/backend/utils/adt/varchar.c.
> Allerdings ist es intelligent, die Eingabe auf Kleinbuchstaben, Ziffern und
> Unterstriche zu beschränken.
Ok, da wir den Datenbanknamen immer quoten, dürfte es auch keine
Probleme bereiten die Großbuchstaben mit hinzuzunehmen. Danke für
den Tipp mit der varchar Definition.

>>> IIRC nicht, aber ich versteh nicht ganz, warum Du den Namen einer DB als
>>> Benutzereingabe prüfen willst/mußt. Der DB-Name ist doch eher, ähm,
>>> statisch.
>> Ja, bei der Software handelt es sich um ein ERP (Enterprice Resource
>> Planning) Tool für kleine und mittelgroße Unternehmen.
>> Wenn man eine neue einzelne Firma anlegt, dann werden alle Daten in
>> eine Postgresdatenbank eingefügt. Deren Name muss der Administrator
>> angeben um sie neu erstellen zu lassen. Wir haben diesen Dialog in
>> das GUI gelegt, um die Konfiguration zu vereinfachen.
>> Bei der Eingabe des Datenbank-Namens wird gleich auf Validität
>> geprüft. (Also es sind nur alpha-nummerische Zeichen erlaubt und
>> Unterstrich, das erste Zeichen muss ein Buchstabe sein, die Anzahl
>> der eingegebenen Zeichen ist auf 63 begrenzt.) Quasi
>> Fehlervermeidung, statt Fehlermeldung...
> Ein Bedenken gegen das Design möchte ich kundtun:
> Das bedeutet, daß das Programm mit einem User mit hohen Privilegien
> (CREATEDB oder gar SUPERUSER) an die Datenbank verbunden sein muß.
Nur dann wenn du das möchtest. Im Prinzip legt man sich einen
Datenbankuser an, der CREATEDB Rechte bekommt oder auch nicht, wenn
man wie von Dir angeregt, das Erstellen einer Datenbank aus dem GUI
vermeiden möchte.
Für den Betrieb der Software ist es auch nicht nötig, über Datenbank
Superuser-Rechte zu verfügen.

> Vielen Leuten macht das vielleicht nichts aus, aber es gibt Menschen
> (und Unternehmen), für die sowas ein Ausschließungsgrund für eine
> Software ist.
Ja, das mag sein. Aber es gibt keinen Zwang seinen Datenbankbenutzer
mit Superuser- oder createdb Rechten auszustatten. Nur wenn man über
die GUI Datenbanken anlegen möchte, braucht man diese Rechte.

Aber danke für den Hinweis, ich hab mir eine Notiz gemacht, in der
Installationanleitung auf die entstehenden Sicherheitsprobleme
hinzuweisen, wenn Datenbankbenutzer über CREATEDB oder gar SUPERUSER
Rechte verfügen. Das wird besonders dann kritisch, wenn noch weitere
Portgresdatenbanken für andere Zwecke benutzt werden.

> Warum kann das nicht einfach ein neues Schema statt einer neuen
> Datenbank sein?
Schema haben wir noch nicht implementiert. Wir benutzen momentan
noch einen selbstgestrickten ORM (aus TinyERP) den wir bis Ende
nächsten Jahres durch SQL-Alchemie und Elixir ersetzen wollen. Ich
denke dann ist der Zeitpunkt gekommen, Schema zu implementieren.

Vielen Dank für Deine guten Tipps!

Schöne Grüße

Udo Spallek


From: udono <udono(at)gmx(dot)net>
To: "pgsql-de-allgemein(at)postgresql(dot)org" <pgsql-de-allgemein(at)postgresql(dot)org>
Subject: Re: Erlaubte Zeichen in Datenbanknamen
Date: 2008-08-10 13:43:57
Message-ID: 489EF09D.4050308@gmx.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-de-allgemein

Hallo Susanne,

Susanne Ebrecht schrieb:
> udono wrote:
>> Wie genau ist der Name einer Postgresdatenbank aufgebaut?
>> Folgendes habe ich schon herausgefunden:
>> Länge: maximal 63 Zeichen
>> Erlaubte Zeichen: Alpha-Nummerisch und Unterstrich (_)
>> Name muss mit einem Buchstaben beginnen.
>> Gibt es noch weitere erlaubte Zeichen oder andere Sachen die ich bei
>> der Prüfung beachten muss?
> Wenn Du wirklich auf Nummer sicher gehen und nicht das Geheule von Usern
> ertragen möchtest, weil sie unterschiedliche Client Encodings zum Login
> verwenden und das "ö" dann doch nicht erkannt wird, wie es sollte ....
> kann ich Dir raten, prüf noch auf Kleinbuchstaben ... bzw. lasse nur
> Kleinbuchstaben zu und keine reserved keywords.
> Also nur a-z + 0-9 + Unterstrich ... dann 63 Zeichen Länge, das sollte
> reichen.
Au ja, reserved keywords habe ich nicht bedacht... da wir den
Datenbanknamen quoten, sollte es aber eigentlich keine Probleme
machen, oder doch?!
Ich werde gleich mal testen ob das Probleme macht, wenn ich eine
Datenbank erstelle die "SELECT" heißt (laut
http://www.postgresql.org/docs/8.3/static/sql-keywords-appendix.html
reserved)
Es scheint keine Probleme zu geben mit einer Datenbank namens
"SELECT"...
Trotzdem Danke für den Tipp.

> Damit erreichst Du in jedem Fall, dass kein User sich beklagt, dass das
> Login nicht erkannt wird und Du ersparst Dir Zeit und Nerven dauernd den
> Usern zu erklären, wie sie Ihr Client-Encoding richtig einstellen.
Danke für die gute Tipps!

Viele Grüße Udo