我最近在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()
答案 0 :(得分:0)
您需要使用以下命令修复mysql.db表:
mysql> REPAIR TABLE mysql.db;
您可以找到类似的问题,其解释为here,但这是由于将数据库从MySQL的早期版本迁移到版本8而引起的。