Erlaubte Zeichen in Datenbanknamen
Erlaubte Zeichen in Datenbanknamen
am 01.08.2008 17:45:43 von udono
Hallo,
für das open source ERP Tryton (www.tryton.org) möchte ich gern=20
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=20
der Prüfung beachten muss?
Viele Grüße
Udo Spallek
--=20
Sent via pgsql-de-allgemein mailing list (pgsql-de-allgemein@postgresql.o=
rg)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-de-allgemein
Re: Erlaubte Zeichen in Datenbanknamen
am 01.08.2008 19:15:12 von andreas.kretschmer
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=20
> Benutzereingaben schon während der Eingabe prüfen.
>=20
> 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.
>=20
> Gibt es noch weitere erlaubte Zeichen oder andere Sachen die ich bei=20
> 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
--=20
Andreas Kretschmer
Kontakt: Heynitz: 035242/47150, D1: 0160/7141639 (mehr: -> Header)
GnuPG-ID: 0x3FFF606C, privat 0x7F4584DA http://wwwkeys.de.pgp.net
--=20
Sent via pgsql-de-allgemein mailing list (pgsql-de-allgemein@postgresql.o=
rg)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-de-allgemein
Re: Erlaubte Zeichen in Datenbanknamen
am 02.08.2008 17:23:00 von udono
Hallo Andreas,
A. Kretschmer schrieb:
>> Gibt es noch weitere erlaubte Zeichen oder andere Sachen die ich bei=20
>> der Prüfung beachten muss?
> IIRC nicht, aber ich versteh nicht ganz, warum Du den Namen einer DB al=
s
> Benutzereingabe prüfen willst/mußt. Der DB-Name ist doch eher, äh=
m,
> statisch.
Ja, bei der Software handelt es sich um ein ERP (Enterprice Resource=20
Planning) Tool für kleine und mittelgroße Unternehmen.
Wenn man eine neue einzelne Firma anlegt, dann werden alle Daten in=20
eine Postgresdatenbank eingefügt. Deren Name muss der Administrator=20
angeben um sie neu erstellen zu lassen. Wir haben diesen Dialog in=20
das GUI gelegt, um die Konfiguration zu vereinfachen.
Bei der Eingabe des Datenbank-Namens wird gleich auf Validität=20
geprüft. (Also es sind nur alpha-nummerische Zeichen erlaubt und=20
Unterstrich, das erste Zeichen muss ein Buchstabe sein, die Anzahl=20
der eingegebenen Zeichen ist auf 63 begrenzt.) Quasi=20
Fehlervermeidung, statt Fehlermeldung...
Viele Grüße
Udo Spallek
--=20
Sent via pgsql-de-allgemein mailing list (pgsql-de-allgemein@postgresql.o=
rg)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-de-allgemein
Re: Erlaubte Zeichen in Datenbanknamen
am 04.08.2008 09:05:16 von Albe Laurenz
udono schrieb:
>>> Gibt es noch weitere erlaubte Zeichen oder andere Sachen die ich bei=20
>>> 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=20
> Planning) Tool für kleine und mittelgroße Unternehmen.
> Wenn man eine neue einzelne Firma anlegt, dann werden alle Daten in=20
> eine Postgresdatenbank eingefügt. Deren Name muss der Administrator=20
> angeben um sie neu erstellen zu lassen. Wir haben diesen Dialog in=20
> das GUI gelegt, um die Konfiguration zu vereinfachen.
> Bei der Eingabe des Datenbank-Namens wird gleich auf Validität=20
> geprüft. (Also es sind nur alpha-nummerische Zeichen erlaubt und=20
> Unterstrich, das erste Zeichen muss ein Buchstabe sein, die Anzahl=20
> der eingegebenen Zeichen ist auf 63 begrenzt.) Quasi=20
> 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
--=20
Sent via pgsql-de-allgemein mailing list (pgsql-de-allgemein@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-de-allgemein
Re: Erlaubte Zeichen in Datenbanknamen
am 04.08.2008 16:11:42 von Susanne Ebrecht
udono wrote:
> Hallo,
> für das open source ERP Tryton (www.tryton.org) möchte ich gern=20
> 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=20
> der Prüfung beachten muss?
Wenn Du wirklich auf Nummer sicher gehen und nicht das Geheule von Usern=20
ertragen möchtest, weil sie unterschiedliche Client Encodings zum Login=
=20
verwenden und das "ö" dann doch nicht erkannt wird, wie es sollte ....=20
kann ich Dir raten, prüf noch auf Kleinbuchstaben ... bzw. lasse nur=20
Kleinbuchstaben zu und keine reserved keywords.
Also nur a-z + 0-9 + Unterstrich ... dann 63 Zeichen Länge, das sollte=20
reichen.
Damit erreichst Du in jedem Fall, dass kein User sich beklagt, dass das=20
Login nicht erkannt wird und Du ersparst Dir Zeit und Nerven dauernd den=20
Usern zu erklären, wie sie Ihr Client-Encoding richtig einstellen.
Viele Grüße
Susanne
--=20
Susanne Ebrecht
52066 Aachen, Germany
Email: miracee@miracee.de
--=20
Sent via pgsql-de-allgemein mailing list (pgsql-de-allgemein@postgresql.o=
rg)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-de-allgemein
Re: Erlaubte Zeichen in Datenbanknamen
am 10.08.2008 15:27:11 von udono
Hallo Laurenz,
Albe Laurenz schrieb:
> udono schrieb:
>>>> Gibt es noch weitere erlaubte Zeichen oder andere Sachen die ich bei=
=20
>>>> 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=20
Probleme bereiten die Großbuchstaben mit hinzuzunehmen. Danke für=20
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=20
>> Planning) Tool für kleine und mittelgroße Unternehmen.
>> Wenn man eine neue einzelne Firma anlegt, dann werden alle Daten in=20
>> eine Postgresdatenbank eingefügt. Deren Name muss der Administrator=20
>> angeben um sie neu erstellen zu lassen. Wir haben diesen Dialog in=20
>> das GUI gelegt, um die Konfiguration zu vereinfachen.
>> Bei der Eingabe des Datenbank-Namens wird gleich auf Validität=20
>> geprüft. (Also es sind nur alpha-nummerische Zeichen erlaubt und=20
>> Unterstrich, das erste Zeichen muss ein Buchstabe sein, die Anzahl=20
>> der eingegebenen Zeichen ist auf 63 begrenzt.) Quasi=20
>> 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=20
Datenbankuser an, der CREATEDB Rechte bekommt oder auch nicht, wenn=20
man wie von Dir angeregt, das Erstellen einer Datenbank aus dem GUI=20
vermeiden möchte.
Für den Betrieb der Software ist es auch nicht nötig, über Datenban=
k=20
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=20
mit Superuser- oder createdb Rechten auszustatten. Nur wenn man über=20
die GUI Datenbanken anlegen möchte, braucht man diese Rechte.
Aber danke für den Hinweis, ich hab mir eine Notiz gemacht, in der=20
Installationanleitung auf die entstehenden Sicherheitsprobleme=20
hinzuweisen, wenn Datenbankbenutzer über CREATEDB oder gar SUPERUSER=20
Rechte verfügen. Das wird besonders dann kritisch, wenn noch weitere=20
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=20
noch einen selbstgestrickten ORM (aus TinyERP) den wir bis Ende=20
nächsten Jahres durch SQL-Alchemie und Elixir ersetzen wollen. Ich=20
denke dann ist der Zeitpunkt gekommen, Schema zu implementieren.
Vielen Dank für Deine guten Tipps!
Schöne Grüße
Udo Spallek
--=20
Sent via pgsql-de-allgemein mailing list (pgsql-de-allgemein@postgresql.o=
rg)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-de-allgemein
Re: Erlaubte Zeichen in Datenbanknamen
am 10.08.2008 15:43:57 von udono
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=20
>> der Prüfung beachten muss?
> Wenn Du wirklich auf Nummer sicher gehen und nicht das Geheule von User=
n=20
> ertragen möchtest, weil sie unterschiedliche Client Encodings zum Log=
in=20
> verwenden und das "ö" dann doch nicht erkannt wird, wie es sollte ...=
..=20
> kann ich Dir raten, prüf noch auf Kleinbuchstaben ... bzw. lasse nur=20
> Kleinbuchstaben zu und keine reserved keywords.
> Also nur a-z + 0-9 + Unterstrich ... dann 63 Zeichen Länge, das sollt=
e=20
> reichen.
Au ja, reserved keywords habe ich nicht bedacht... da wir den=20
Datenbanknamen quoten, sollte es aber eigentlich keine Probleme=20
machen, oder doch?!
Ich werde gleich mal testen ob das Probleme macht, wenn ich eine=20
Datenbank erstelle die "SELECT" heißt (laut=20
http://www.postgresql.org/docs/8.3/static/sql-keywords-appen dix.html=20
reserved)
Es scheint keine Probleme zu geben mit einer Datenbank namens=20
"SELECT"...
Trotzdem Danke für den Tipp.
> Damit erreichst Du in jedem Fall, dass kein User sich beklagt, dass das=
=20
> Login nicht erkannt wird und Du ersparst Dir Zeit und Nerven dauernd de=
n=20
> Usern zu erklären, wie sie Ihr Client-Encoding richtig einstellen.
Danke für die gute Tipps!
Viele Grüße Udo
--=20
Sent via pgsql-de-allgemein mailing list (pgsql-de-allgemein@postgresql.o=
rg)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-de-allgemein