Sur un serveur que je maintiens de temps en temps (qui utilise un panel d’administration), durant un upgrade MySQL server est passé en version 5.5
Il se trouve que cette version semble avoir un ‘bug’ (en gros si vous pouvez attendre …) une fois le serveur mis à jour, il y a de grande chance que vous ne puissiez plus vous connecter avec comme message :
error 1524 Plugin 'none' is not loaded
Ce problème apparaît quand un programme a ajouté des colonnes à la table user de la base mysql
Suite à l’analyse trouvée sur le site : jawama j’ai du effectivement changer l’ordre des colonnes !! (moi j’appelle ça un bug …)
Mais comment exécuter des requêtes SQL quand on ne peut pas se connecter ???
- Trouver un autre PC ou vous pouvez installer un Mysql-Server 5.5 (on va l’appeler serveur ‘bis’)
- Sur votre serveur malade arrêter MySQL (à grand coup de kill -9, je n’ai pas trouvé d’autres solutions) :
# ps -aef | grep mysql | grep -v "grep"
root 5140 1 0 janv.02 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe
mysql 5364 5140 0 janv.02 ? 00:00:26 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin
# kill -9 5140 (Exemples à adapter bien entendu)
# kill -9 5364
- Déplacer le schéma ‘mysql’ vers ‘mysql2’ (ça paraît brutal, mais à mon grand étonnement ça fonctionne)
# mv /var/lib/mysql/mysql /var/lib/mysql/mysql2
- Recopier le schéma mysql de ‘bis’
# scp -r root@bis:/var/lib/mysql/mysql /var/lib/mysql
# chown mysql:mysql /var/lib/mysql/mysql -R
# service mysql restart
Si le but est juste de redémarrer MySQL, on peut s’arrêter la.
S’il faut adapter l’ancien schéma, alors on continu.
# mysql -u root -p (si vous avez défini un mot de passe pour root sur bis)
mysql> use mysql2
mysql> ALTER TABLE `user` MODIFY COLUMN `plugin` CHAR(64) COLLATE utf8_bin DEFAULT '' AFTER `max_user_connections`;
mysql> ALTER TABLE `user` MODIFY COLUMN `authentication_string` TEXT COLLATE utf8_bin AFTER `plugin`;
mysql> quit
# service mysql stop
# mv /var/lib/mysql/mysql /var/lib/mysql/mysql3
# mv /var/lib/mysql/mysq2 /var/lib/mysql/mysql
# mv /var/lib/mysql/mysql3 /var/lib/mysql/mysql2
# service mysql start
Voilà une grosse bidouille pour commencer l’année !