ОШИБКА 1728 (HY000): не удается загрузить файл mysql.db.Таблица, вероятно, повреждена - PullRequest
0 голосов
/ 18 июня 2019

Я недавно установил Mac OS 10.14.5 на мой Mac mini (конец 2012 года). Я сделал mysqldump --all-database на моем ноутбуке с MySQL 5.6.15, скопировал файл на мой Mac mini и импортировал дамп на 8.0.16 MySQL Community Server - GPL, который был предустановлен с Mac OS 10.14 0,5. При попытке получить доступ к веб-страницам, использующим MySQL, я получаю сообщение об ошибке:

mysqli_connect (): сервер запросил неизвестный клиенту метод аутентификации [caching_sha2_password]

Я думал, что это потому, что в дамп не была включена БД MySQL (включая mysql.user), и, конечно же, не было пользователей, кроме mysql.infoschema, mysql.session, mysql.sys и root; ни один из созданных мной пользователей не был в mysql.users. Поэтому я попытался создать пользователя, которого я определил на своей веб-странице php:

создать пользователя 'username' @ 'localhost', идентифицированного как 'password';

и получил следующее сообщение об ошибке:

ОШИБКА 1728 (HY000): Невозможно загрузить из mysql.db. Возможно, таблица повреждена

Поэтому я изменил учетные данные для входа на веб-странице php, чтобы использовать root, и все равно получил сообщение об ошибке:

mysqli_connect (): сервер запросил неизвестный клиенту метод аутентификации [caching_sha2_password]

Код, который я использую для подключения к БД:

функция connectDBi ($ str_server, $ str_username, $ str_password, $ str_database, $ bool_debug = false) { $ linkDB = mysqli_connect ($ str_server, $ str_username, $ str_password, $ str_database);

if(!$linkDB)
{
    if($bool_debug)
    {
        echo '<div style="border:1px solid blue;">';
        echo backtrace(debug_backtrace())
            .'UNsuccessful connection "'.$str_database.'" '
            .'on "'.$str_server.'" '
            ;
        echo '</div>'."\n";
    } // if($bool_debug) else
} // if(!$linkDB)
else
{
    if($bool_debug)
    {
        echo '<div style="border:1px solid blue;">';
        echo backtrace(debug_backtrace())
            .'SUCCESSFUL connection to "'.$str_database.'" '
            .'on "'.$str_server.'" '
            ;
        echo '</div>'."\n";
    }
    return $linkDB;
} // if(!$linkDB) else

} ​​// функция connectDBi ()

1 Ответ

0 голосов
/ 18 июня 2019

Вам нужно восстановить таблицу mysql.db с помощью этой команды:

mysql> REPAIR TABLE mysql.db;

Подобный вопрос можно найти с объяснением здесь , но оно вызвано перемещением базы данных изпредыдущая версия MySQL до версии 8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...