Код ошибки: 1728. Не удается загрузить файл mysql.db. Таблица, вероятно, повреждена
Всякий раз, когда я пытаюсь сделать запрос БД с конкретным пользователем БД (myuser
) Я получаю следующую ошибку:
Для пользователя 'myuser'@'localhost' запрещен доступ к базе данных 'mydatabase' [1044]
Я решил проверить гранты для этого пользователя и увидел, что один из грантов может получить выгоду от обновления, поэтому я попытался обновить его и получил следующую ошибку:
Код ошибки: 1728. Не удается загрузить файл mysql.db. Таблица, вероятно, повреждена
Я погуглил ошибку и обнаружил, что не могу загрузить файл mysql.proc. Таблица, вероятно, повреждена, что рекомендует делать mysql_upgrade -u root -pxxx
, Я попробовал это и получил эту ошибку:
Произошла ошибка: mysql.session существует, но неправильно настроен. Для mysql.session нужны привилегии SELECT в базе данных performance_schema и таблице mysql.db, а также привилегии SUPER.
Я гуглю эту ошибку и обнаружил MySQL Upgrade Issue, но ответ там не применим - кажется, что только один mysql.session
пользователь, когда я делаю SELECT * FROM mysql.user;
, Так что я подумал, может быть, я просто создаю ГРАНТЫ сам:
GRANT SELECT ON `performance_schema`.* TO 'mysql.session'@'localhost';
GRANT SELECT ON `mysql`.`db` TO 'mysql.session'@'localhost';
GRANT SUPER ON *.* TO 'mysql.session'@'localhost';
Единственная проблема: когда я пытаюсь сделать это, я получаю то же самое Error Code: 1728. Cannot load from mysql.db. The table is probably corrupted
"что я получил раньше.
Мой вопрос... что я могу сделать, чтобы это исправить? У меня есть полная резервная копия БД, которую я без проблем восстановил несколько месяцев назад, и если с тех пор в БД произошли какие-либо изменения в БД, то я могу проиграть. Может быть, мой лучший вариант - просто удалить MySQL и переустановить его? И если это так, то могу ли я предпринять какие-либо шаги, чтобы предотвратить повторное возникновение этой проблемы?
Я использую MySQL 5.7.25-0ubuntu0.16.04.2 в Ubuntu 16.04.5 LTS на капле Digital Ocean.
Есть идеи?
редактировать: я также получаю эту ошибку, когда я пытаюсь создать нового пользователя MySQL:
CREATE USER username IDENTIFIED BY 'password';
Я старался mysqlcheck -uroot mysql db
и получил это обратно:
mysql.db OK
Я старался ls -latr /var/lib/mysql/mysql/db*
и получил это обратно:
-rw-r----- 1 mysql mysql 65 Nov 8 03:55 db.opt
-rw-r----- 1 mysql mysql 440 Nov 10 17:51 db.MYD
-rw-r----- 1 mysql mysql 5120 Feb 11 11:54 db.MYI
-rw-r----- 1 mysql mysql 9582 Feb 11 11:54 db.frm
Замечу, что нет *.ibd файла idk.
SELECT * FROM mysql.db
, хотя вошел в систему как SSH root / MySQL, работает без проблем, но все " Error Code: 1728. Cannot load from mysql.db. The table is probably corrupted
"ошибки также приходят ко мне при входе в систему как root SSH / MySQL root, так что idk.