MySQL 8.0的新身份验证协议



在MySQL 8.0.4中,有一个新的客户端<->服务器身份验证协议。当我尝试从客户端连接到 MySQL 服务器时,MySQL 服务器响应:

客户端不支持服务器请求的身份验证协议;请考虑升级 MySQL 客户端

到目前为止,我直接从我的应用程序连接到MySQL - 没有libMySQL.dll。所以我在没有库的情况下直接通过TCP/IP进行通信。现在我必须实现新的身份验证。从何处获取有关新客户端服务器协议的信息?

在MySQL内部手册中,我没有找到有关它的信息。这不是迄今为止的更新吗?

其他MySQL客户端应用程序也遇到了同样的问题。所以这不是我开发语言的问题 - 这是MySQL服务器的客户端<->服务器协议的问题。(我正在使用Delphi,我的客户端库有3000多行代码。

我正在寻找一种适用于每个MySQL服务器的解决方案 - 不仅适用于我的服务器。因此,更改密码存储对我来说不是解决方案。

对于MySQL 8,默认身份验证现在是SHA-2,您可以在此处阅读: https://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authentication.html

您可能应该使用它,但是如果您不希望,可以使用以下内容将任何给定用户的默认值更改为旧模式:

ALTER USER myUser IDENTIFIED WITH mysql_native_password BY 'PASSWORD';

如果您正在寻找快速修复,这将强制使用旧方法。

您(我怀疑(不想开始更改客户端的源代码,因为这样您就有了它的分支版本,这将使服务器上的部署和更新成为一场噩梦。您最好等到支持新方法的客户端软件的新版本可用。

MySQL源代码在这里: https://github.com/mysql

最新更新