Sebbene la comparsa di nuove versioni MySQL è sempre stata contenuta, non è possibile contenere completamente disagi e comparsa di errori come Column count of mysql user is wrong o simili successivi a necessari aggiornamenti al software di database ed alle dipendenze.
L’aspetto da tenere in ulteriore considerazione è anche quello dell’esistenza di configurazioni non omogenee, quindi la libertà di poter raggiungere la propria configurazione di riferimento significa dover fare scelte differenti al momento dell’installazione e in occasione degli aggiornamenti.
Perché compare l’errore Column count of mysql user is wrong
Come citato, la configurazione MySQL di un sistema è il risultato di scelte di installazione ed aggiornamento del software di database, di librerie e dipendenze, attività di migrazione da sistemi ereditati. È proprio questo ultimo scenario la combinazione più probabile che espone all’errore focalizzato in questo articolo: versioni differenti del motore MySQL introducono meccanismi diversi di privilegi e permessi, specialmente tra generazioni major distanti.
Questo problema si riesce per esempio a replicare quando dati storici non vengono esportati in uscita con mysqldump, oppure il lancio di un comando GRANT produce un errore.
Sistemare le tabelle dei privilegi per la versione corrente
MySQL mette a disposizione il programma mysql_upgrade (già mysql_fix_privileges_table ) per questo scopo.
Dopo aver salvaguardato i dati con una copia di sicurezza, è possibile lanciare tale comando come se si trattasse del programma “client” mysql ovvero:
mysql_upgrade -uroot -p
ottenendo un risultato simile al seguente
[root@carbonio ~]# mysql_upgrade -uroot -p Enter password: Looking for 'mysql' as: mysql Looking for 'mysqlcheck' as: mysqlcheck Running 'mysqlcheck'... bh1.categorie OK bh1.contact_requests OK bh1.origine_dati OK bh1.sotto_categorie OK bh1.super_categorie OK impiego.dump OK impiego.offerte OK mysql.columns_priv OK mysql.db OK mysql.func OK mysql.help_category OK mysql.help_keyword OK mysql.help_relation OK mysql.help_topic OK mysql.host OK mysql.proc OK mysql.procs_priv OK mysql.tables_priv OK mysql.time_zone OK mysql.time_zone_leap_second OK mysql.time_zone_name OK mysql.time_zone_transition OK mysql.time_zone_transition_type OK mysql.user OK web.config OK Running 'mysql_fix_privilege_tables'... OK [root@carbonio ~]#
Sono disponibili alcune direttive ulteriori per un utilizzo avanzato, consultabili attraverso il man del comando.