我最近在我的 Mac mini 上安装了 Mac OS 10.14.5(2012 年末)。我在运行 MySQL 5.6.15 的笔记本电脑上执行了 mysqldump --all-databases,将文件复制到我的 Mac mini,并将转储导入到 8.0.16 MySQL 社区服务器 - Mac OS 10.14 中预装的 GPL .5.当尝试访问使用 MySQL 的网页时,我收到错误消息:
mysqli_connect():服务器请求客户端未知的身份验证方法[caching_sha2_password]
我以为这是因为转储没有包含 MySQL DB(包括 mysql.user),果然除了 mysql.infoschema、mysql.session、mysql.sys 和 root 之外没有其他用户;我创建的用户都不在 mysql.users 中。所以我尝试创建我在 php 网页中定义的用户:
创建由“密码”标识的用户“用户名”@“localhost”;
并收到以下错误消息:
错误 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()
您需要使用以下命令修复 mysql.db 表:
mysql> REPAIR TABLE mysql.db;
您可以在here找到类似的问题和解释,但这是由于将数据库从以前版本的MySQL移动到版本8而引起的。
mysql> 修复表 mysql.user; +------------+--------+----------+---------------- --------------------------------------------------+ |表|欧普|消息类型 |消息文本 | +------------+--------+----------+---------------- --------------------------------------------------+ | mysql.user |维修|注意|表的存储引擎不支持修复 | +------------+--------+----------+---------------- --------------------------------------------------+ 一组 1 行(0.00 秒)