If you
upgraded your MySQL server (from 5.6 to 5.7 or above)
or
imported a MySQL dump SQL file from older version
than your current server you may encounter when granting permissions to a user:
Error 'Column count of mysql.user is wrong. Expected 45, found 43. The table is probably corrupted' on query. Default database: ''. Query: 'GRANT REPLICATION SLAVE ON *.* TO 'replusr'@'144.76.156.182''
Do not panic probably it is not corrupted just continue reading.
There is the simple fix, just
execute mysql_upgrade
It will automatically detect what to upgrade and it will upgrade it:
[myuser@mysql1 ~]# screen -R upgrade [myuser@mysql1 ~]# mysql_upgrade Checking if update is needed. Checking server version. Running queries to upgrade MySQL server. Checking system database. mysql.columns_priv OK mysql.db OK mysql.engine_cost OK mysql.event OK mysql.func OK mysql.general_log OK mysql.gtid_executed OK mysql.help_category OK mysql.help_keyword OK mysql.help_relation OK mysql.help_topic OK mysql.host OK mysql.innodb_index_stats OK mysql.innodb_table_stats OK mysql.ndb_binlog_index OK mysql.plugin OK mysql.proc OK mysql.procs_priv OK mysql.proxies_priv OK mysql.server_cost OK mysql.servers OK mysql.slave_master_info OK mysql.slave_relay_log_info OK mysql.slave_worker_info OK mysql.slow_log 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 The sys schema is already up to date (version 1.5.1). Found 0 sys functions, but expected 22. Re-installing the sys schema. Upgrading the sys schema. Checking databases. phpmyadmin.pma__bookmark OK phpmyadmin.pma__central_columns OK phpmyadmin.pma__column_info OK phpmyadmin.pma__designer_settings OK phpmyadmin.pma__export_templates OK phpmyadmin.pma__favorite OK phpmyadmin.pma__history OK phpmyadmin.pma__navigationhiding OK phpmyadmin.pma__pdf_pages OK phpmyadmin.pma__recent OK phpmyadmin.pma__relation OK phpmyadmin.pma__savedsearches OK phpmyadmin.pma__table_coords OK phpmyadmin.pma__table_info OK phpmyadmin.pma__table_uiprefs OK phpmyadmin.pma__tracking OK phpmyadmin.pma__userconfig OK phpmyadmin.pma__usergroups OK phpmyadmin.pma__users OK sys.sys_config OK db1.access OK db1.users OK db1.objects OK db1.isp OK db1.desc OK Upgrade process completed successfully. Checking if update is needed.
It works when the server is up and running and it is a good idea to execute the command in a screen.
It does not need to be logged as root, but mysql_upgrade does need to have the root MySQL password. In the example above it did not asked for password, because we have it in ~/.my.cnf file.
Just to note you might upgraded a long before this error to appear!
If you do not use a certain functionality you could live up happily with the old mysql.user scheme (and all old mysql.* tables). In our case we upgraded one of our slaves and several days after when a grant command on the master was issued the replication just stopped with this error! Of course, if someone were used the command in our slave the error would have appeared there sooner.
We also had case where old MySQL SQL dump file (5.6) was imported in a newer MySQL server 5.7 and there had been no issues for weeks till the GRANT command.
perror
Th error code is 1805.
[myuser@mysql1 ~]# perror 1805 MySQL error code 1805 (ER_COL_COUNT_DOESNT_MATCH_CORRUPTED_V2): Column count of %s.%s is wrong. Expected %d, found %d. The table is probably corrupted