Всякий раз, когда я пытаюсь сделать запрос БД с конкретным пользователем БД (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, но ответ там не применим - кажется, только один пользователь 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.
Есть идеи?