MySQL 4.1

Die 4.1 hat einige neue nette Features aber auch einige Stolpersteine.
Hier das wichtigste worauf man achten sollte:

– Passwort hashing (Fehler: „Client does not support authentication protocol …“)
– Tabellen in der mysql database wurden vergrössert
– Replikationsuser braucht Zusatzrechte
– Geändertes „now()“
– Perlmodul DBD-mysql


Compiliert wird die 4.1er genauso wie in „Mysql vom scratch“ beschrieben.

Besonderheiten gegenüber 4.0 im einzelnen:
– Das Passworthashing ist von 16 byte auf 41 byte vergössert worden.
Wenn die Clients damit Probleme haben, das sieht man an der Fehlermeldung
„Client does not support authentication protocol…“, muss man endweder die
Clients auf 4.1 updaten oder aber die MySQL mit der Option „old-passwords“,
in der my.cnf, oder „–old-passwords“, auf der Commandline, starten.
Passwortänderungen (von 41 byte zu 16 byte) werden mit den MySQL-Statements:
mysql> UPDATE user SET Password = OLD_PASSWORD(‚password‘) WHERE User = ‚user‘;
mysql> FLUSH PRIVILEGES;
gemacht.

– Die Tabelle user der mysql database ist um 14 Spalten vergrössert.
Ein einfacher Dump einer 4.0er und wiedereinspielen in eine 4.1er würde ergo
scheitern wenn man den Dump nicht um die 14 Spalten erweitern würde.
„mysql_fix_privilege_tables.sh“, im scripts Verzeichniss des Sourcecodes, sollte,
bei einem Upgrade einer vorhandenen 4.0er MySQL, benutzt werden.
Selbiges trifft für die db table zu. Hier sind es aber nut zwei Spalten die
hinzugekommen sind.

– Wenn man den MySQL eigenen Replikationsmechanismuss verwendet muss der
Replikationsuser das Recht „Repl_client_priv“ auf „Y“ gesetzt bekommen. Weitere
Rechte sollte er nicht brauchen.

– Das MySQL Statement „now()“ produziert nicth mehr diesen eigenwilligen MySQL
eigenen String sondern einen human readable Timestamp wie „2005-05-03 14:54:00“
beim auslesen via select. Mit folgendem Query bekommt man daraus einen besser,
via script parsbaren, string:
mysql> select ts +0 from table;

+----------------+
| ts +0          |
+----------------+
| 20050503145400 |
+----------------+
1 row in set (0.00 sec)

Wie man sehen kann ist dies zwar kein unixtimestamp sondern yyyymmddhhmmss aber
immerhin ist das, meiner Meinung nach, besser/einfacher parsbar als
„2005-05-03 14:54:00“.

– Das Perlmodul DBD-mysql muss >= 2.9006 sein. Alles ältere funktioniert nicht
mehr richtig.

Das war erstmal so das Wichtigste (was mir so aufgefallen ist).
Alles in allem durchaus verbesserungen gegenüber 4.0. Allerdings sollte man beim
Umstieg darauf gefasst sein das man ggf. einiges ändern muss. 🙂