错误1728(HY000):无法从mysql.db加载。该表可能已损坏

时间:2019-06-17 22:07:11

标签: php mysql macos apache

我最近在Mac mini(2012年末)上安装了Mac OS 10.14.5。我在运行MySQL 5.6.15的笔记本电脑上做了mysqldump --all-databases,将文件复制到Mac mini,然后将转储导入到Mac OS 10.14预先安装的8.0.16 MySQL Community Server-GPL中。 .5。尝试访问使用MySQL的网页时,出现错误消息:

mysqli_connect():服务器请求客户端未知的身份验证方法[caching_sha2_password]

我认为这是因为转储不包含MySQL数据库(包括mysql.user),并且确实可以确定,除了mysql.infoschema,mysql.session,mysql.sys和root之外,没有其他用户。我创建的用户都不在mysql.users中。因此,我尝试创建在php网页中定义的用户:

创建由“密码”标识的用户“用户名” @“本地主机”;

,并收到以下错误消息:

错误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 :(得分:0)

您需要使用以下命令修复mysql.db表:

mysql> REPAIR TABLE mysql.db;

您可以找到类似的问题,其解释为here,但这是由于将数据库从MySQL的早期版本迁移到版本8而引起的。