Usernamenbeschränkung

Usernamenbeschränkung

am 25.05.2007 15:03:11 von Kay-Michael Voit

Hallo,
die Spalte `User` im mysql.user ist auf 16 Zeichen begrenzt. Hat das einen
besonderen Sinn? Ich würde nämlich gerne Accounts eines bestehenden System
auch in der Datenbank verwenden. Und das sind E-Mail-Adressen, die
Regelmäßig länger sind.
Muss ich irgendwie auf die verwendeten Zeichen achten?

Und zu guter Letzt, falls das so problemlos möglich ist: Hat zufällig
jemand, der das gleich Problem hatte, eine sql-Datei zur hand, die die
ALTER-Anweisungen für alle betroffenen Tabellen beinhaltet?

Gruß
Kay

Re: Usernamenbeschränkung

am 25.05.2007 15:21:27 von Christian Kirsch

Am 25.05.2007 15:03 schrieb Kay-Michael Voit:
> Hallo,
> die Spalte `User` im mysql.user ist auf 16 Zeichen begrenzt. Hat das einen
> besonderen Sinn? Ich würde nämlich gerne Accounts eines bestehenden System
> auch in der Datenbank verwenden. Und das sind E-Mail-Adressen, die

Das würde ich auch gerne (Single-Sign-on mit Benutzer*namen*, nicht
mit Mail-Adressen). Abgesehen davon würde ich Benutzernamen und
Mailadressen immer getrennt halten - Mail-Adressen sind ein quasi
kostenloses Gut, die wechselt man auch mal schnell.

> Regelmäßig länger sind.
> Muss ich irgendwie auf die verwendeten Zeichen achten?

"irgendwie" sicherlich, denn es dürfen ja nicht mehr als 16 sein. Was
bedeutet Deine Frage?

>
> Und zu guter Letzt, falls das so problemlos möglich ist: Hat zufällig
> jemand, der das gleich Problem hatte, eine sql-Datei zur hand, die die
> ALTER-Anweisungen für alle betroffenen Tabellen beinhaltet?

Ich würde Dir nicht dazu raten, die user-Tabelle der mysql-Datenbank
zu modifizieren. Wer garantiert Dir, dass nicht auch im Protokoll
zwischen Client- und Server die 16 Zeichen hart verdrahtet sind? Dann
fliegt Dir entweder der Client um die Ohren, oder der Server, oder man
kann sich nicht anmelden. Im besten Fall schneidet irgendjemand jedes
Zeichen nach dem 16. ab. Schließlich kann es Dir auch passieren, dass
MySQL 6 seine Benutzer ganz anders verwaltet. Dann hast Du diese
Änderung vergeblich gemacht.

Disclaimer: Es *gibt* Datenbanken, die LDAP zur Authentifizierung
benutzen können. MySQL behört bislang meines Wissens nicht dazu.

Re: Usernamenbeschränkung

am 25.05.2007 15:53:27 von Kay-Michael Voit

> Das würde ich auch gerne (Single-Sign-on mit Benutzer*namen*, nicht
> mit Mail-Adressen). Abgesehen davon würde ich Benutzernamen und
> Mailadressen immer getrennt halten - Mail-Adressen sind ein quasi
> kostenloses Gut, die wechselt man auch mal schnell.
Die Mailadressen sind Teil des Systems. Die wechselt man nicht. Die SIND
quasi die Accounts.

> "irgendwie" sicherlich, denn es dürfen ja nicht mehr als 16 sein. Was
> bedeutet Deine Frage?
Ist das so unklar? Darf ein '@' in einem Usernamen vorkommen, Punkte,
Bindestrichte, Pluszeichen... Bei Tabellennamen ist das ja teilweise z.B.
aus mehr oder weniger naheliegenden Gründen nicht so.

>> Und zu guter Letzt, falls das so problemlos möglich ist: Hat zufällig
>> jemand, der das gleich Problem hatte, eine sql-Datei zur hand, die die
>> ALTER-Anweisungen für alle betroffenen Tabellen beinhaltet?

> Ich würde Dir nicht dazu raten, die user-Tabelle der mysql-Datenbank
> zu modifizieren. Wer garantiert Dir, dass nicht auch im Protokoll
> zwischen Client- und Server die 16 Zeichen hart verdrahtet sind?
Im Zweifelsfall die Protokollspezifikation. Und der anschließende Test. Ist
aber eh nur für PHP wichtig, denn auf mehr haben User mit dieser
Namenskonvention eh keinen Zugriff. Die übrige Software wie der Mailserver
könnten ja kürzere Logins bekommen, wenn es nicht anders geht.


> Disclaimer: Es *gibt* Datenbanken, die LDAP zur Authentifizierung
> benutzen können. MySQL behört bislang meines Wissens nicht dazu.
Wäre auch hier nicht praktikabel. Die Userdaten wechseln zwar nicht dauern,
aber es gibt dazu massenweise verknüpfte Daten, die das tun und für die
LDAP nicht da ist.
Außerdem verstehe ich es nicht :) (Will demnächst mal nen kleinen
Anmeldeserver für ein paar Linuxrechner aufsetzen und komme da mit den
komischen Containern und Objektklassen nciht so ganz klar)

Hm, aber scheint doch eher unangenehm zu sein. Dann werde ich es wohl weiter
bei der manuellen Vergabe im Bedarfsfall belassen. Vielleicht mit der
Konvention "user"

Re: Usernamenbeschränkung

am 25.05.2007 16:36:22 von Axel Schwenke

Kay-Michael Voit wrote:

> die Spalte `User` im mysql.user ist auf 16 Zeichen begrenzt. Hat das einen
> besonderen Sinn?

Vermutlich fragst du gar nicht nach dem Sinn, sondern nach einem Grund.
Es gibt keinen speziellen. Wahrscheinlich wurden wohl 16 Zeichen für
den Usernamen als ausreichend erachtet.

> Ich würde nämlich gerne Accounts eines bestehenden System
> auch in der Datenbank verwenden. Und das sind E-Mail-Adressen, die
> Regelmäßig länger sind.

Und warum müssen diesen Personen MySQL-Accounts zugeordnet sein? Viele
Applikationen kommen mit einem einzigen Datenbank-Account aus und
verwalten ihre Rechte selber (wobei die Rechtetabellen dann natürlich
auch wieder in der Datenbank sein können).

> Muss ich irgendwie auf die verwendeten Zeichen achten?

Seit MySQL 4.1 ist das ein UTF8 String. Du kannst also alle Zeichen
aus der Unicode-BMP verwenden.

> Und zu guter Letzt, falls das so problemlos möglich ist: Hat zufällig
> jemand, der das gleich Problem hatte, eine sql-Datei zur hand, die die
> ALTER-Anweisungen für alle betroffenen Tabellen beinhaltet?

So einfach geht das nicht. Die Feldlängen der Permission-Tabellen sind
an einigen Stellen im Server-Code hartcodiert (u.a. weil MySQL diese
Daten im RAM cached). Du kannst das nicht einfach so ändern.


XL

Re: Usernamenbeschränkung

am 25.05.2007 17:58:53 von Kay-Michael Voit

> Und warum müssen diesen Personen MySQL-Accounts zugeordnet sein? Viele
> Applikationen kommen mit einem einzigen Datenbank-Account aus und
> verwalten ihre Rechte selber (wobei die Rechtetabellen dann natürlich
> auch wieder in der Datenbank sein können).
Weil das ein System für ein Netz von Jugendzentren ist (die sich einen
Rootserver teilen). Dort liegen einerseits die Seiten und Webapplikationen
der Zentren und andererseits die der Kinder, die so was in Kursen lernen.
Nun sind wir in einer größeren Restrukturierung gerade dabei, die Accounts
zu vereinheitlichen, damit nicht jeder für Datenbank, Mail, Forum, FTP ...
unterschiedliche Logindaten hat. Und da die Mailadressen eine natürliche
Zuordnung zu Zentren beinhalten, bieten die sich eben an.
Bis jetzt funktioniert auch alles sehr gut. Einzig der MySQL-Server sträubt
sich noch und hat einen Wust an nach bedarf vergebenen Usernamen ohne
besondere Konventionen.

Da ich nun überzeugt bin, dass ich um die 16 Zeichen nicht drumkomme, werde
ich da wohl wie schon geschrieben auf "user-"
zurückgreifen. Ist nicht schön, aber immernoch besser als das aktuelle
Chaos.

> So einfach geht das nicht. Die Feldlängen der Permission-Tabellen sind
> an einigen Stellen im Server-Code hartcodiert (u.a. weil MySQL diese
> Daten im RAM cached). Du kannst das nicht einfach so ändern.
OK. Hätte ja sein können, dass es so einfach ist und nur die Systemtabellen
blöd.