MySQL Upgrade

Letzte Woche war $title angesagt und MySQL von 3.23 ueber 4.0 und 4.1 auf 5.0 aktualisiert. Vorgehensweise:

  • Alle relevanten Binaries ziehen und lokal im Homedir installieren
  • DB sichern und herunterfahren
  • nacheinander alle Versionen und deren Upgradescripts an der DB Hand anlegen lassen
  • 5.0 im Homedir an Port 3306 ‘produktiv’ weiterlaufen lassen
  • 5.0 im System installieren
  • 5.0 im Homedir stoppen und die Systemvariante starten

Das ging auch ganz reibungslos vonstatten. Dummerweise ist irgendeines der Updatescripts derart kaputt, die Privilegien Create_tmp_table und Lock_tables global fuer alle User zu setzen. Das macht sich dann primaer darin bemerkbar, dass alle Benutzer alle Datenbanken z.b. im phpMyAdmin via SHOW DATABASES sehen, denn SHOW DATABASES listet alle Datenbanken fuer die ein Benutzer irgendwelche rechte (z.b. Create_tmp_table) hat.

Zu dieser Symptomatik finden sich auch die Bugreports 1234, 3414 und 10819 im Bugtracking von MySQL. Das Problem besteht aber weiterhin.

Hier mein kleiner Fix:

use mysql;
update db set Create_tmp_table_priv='Y' where user in 
    (select User from user where Create_tmp_table_priv='Y');
update db set Lock_tables_priv='Y' where user in 
    (select User from user where Lock_tables_priv='Y');
update User set Create_tmp_table_priv='N' where 
    Create_tmp_table_priv='Y' and Super_priv='N';
update user set Lock_tables_priv='N' where 
    Lock_tables_priv='Y' and Super_priv='N';
flush privileges;

Ein Kommentar zu “MySQL Upgrade”

  1. Andreas

    Klasse. Genau diesen kleinen “Fix” suche ich seit Stunden im Netz. Hatte genau das gleiche Problem mit phpMyAdmin. Jetzt klappt alles. Besten Dank 🙂

Einen Kommentar schreiben:

Bitte schreib' in das folgende Feld die Zahl 123: