Пытаясь предоставить пользователю права доступа к новой базе данных, я сталкиваюсь с ошибкой
ERROR 1547 (HY000): Column count of mysql.user is wrong. Expected 42, found 39. The table is probably corrupted
Я использую Ubuntu 14.04, а SELECT version();
говорит мне, что я использую MySQL v 5.5 (5.5.62-0ubuntu0.14.04.1
, изначально установлен как 5.5.46-0ubuntu0.14.04.2
).
Эти вопросы о переполнении стека показывают, что лучшим решением является запуск mysql_upgrade
:
Мой многолетний опыт работы с неиспользуемым мусором, который является программным обеспечением с открытым исходным кодом, позволяет мне заранее предсказать, что это не будетРабота.Но я все равно пробую:
$ mysql_upgrade -u root -p
Enter password:
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/var/run/mysqld/mysqld.sock'
Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/var/run/mysqld/mysqld.sock'
...
FATAL ERROR: Error during call to mysql_check for upgrading the tables names.
Сбой с бесполезным сообщением об ошибке.
Из приведенных выше ссылок второе наиболее успешное решение - вручную настроить таблицу mysql.users
наудовлетворить все, что ожидает жалоба.В этом случае это означает, что мне нужно определить, какие три столбца мне нужно добавить в мою таблицу mysql.users
(в которой DESCRIBE mysql.users
подтверждает только 39 столбцов).
Есть ли способ точно узнать, какие столбцыMySQL v5.5 ожидает, что его таблица mysql.users
будет иметь?Поиск в Интернете ничего не дал, и документы, которые я нашел, не доходят до такого уровня детализации.
Редактировать
На основании информации, предоставленной в принятомответ, я могу определить три пропущенных столбца как Create_tablespace_priv
, plugin
и authentication_string
.Добавление их с помощью
ALTER TABLE mysql.user ADD COLUMN Create_tablespace_priv ENUM('N','Y') AFTER Trigger_priv;
ALTER TABLE mysql.user ADD COLUMN plugin CHAR(64) NULL AFTER max_user_connections;
ALTER TABLE mysql.user ADD COLUMN authentication_string text NULL Default NULL AFTER plugin;
позволяет мне успешно выполнить команду GRANT ALL PRIVILEGES
.