7

作为我们构建过程的一部分,我们使用该mysqldiff实用程序(从 maven 调用)通过将新构建的模式副本与从基线和我们的迁移脚本创建的模式版本进行比较来验证我们的数据库迁移脚本。这一切都适用于 MySQL 5.7。

我们正在寻求升级到 MySQL 8.0.13。数据库用户已配置为使用mysql_native_password. 当我们运行构建时,我们从以下位置收到此错误mysqldiff

ERROR: Authentication plugin 'caching_sha2_password' is not supported

我们知道这个错误是由于该实用程序使用的是旧版本的 mysql-python-connector。我们也知道答案可能与升级连接器版本一样简单,但我们不知道如何尝试。

MySQL 实用程序可以在https://github.com/mysql/mysql-utilities找到。

在 Windows 10 上,我们使用 Oracle Windows 安装程序进行安装。在 Amazon Linux 上,我们使用 yum 安装。

笔记:

  1. MySQL 实用程序似乎基于嵌入式 python2.7 安装(我们没有在任何开发或构建机器上安装独立的 python)。
  2. 我们没有 python 专业知识,所以如果我们正在处理嵌入式 python 的东西,详细的步骤会很有帮助。
  3. 我们需要在 Windows 10 和 Amazon Linux 上解决这个问题。

我们如何解决此错误,以便我们可以在 Windows 10 和 Amazon Linux 上将 mysqldiff 与 MySQL 8.0.13 服务器一起使用?

如果答案只是升级连接器,那么详细的步骤是什么?

我们可以进行服务器安装/配置更改以支持客户端连接旧驱动程序吗?

4

2 回答 2

2

我设法通过一些补丁mysqldiff.py运行了 mysql 8 :

克隆修补的源代码并输入其目录:

$ git clone https://github.com/georgexsh/mysql-utilities.git

创建一个virtualenv并激活它:

$ virtualenv -p python2 venv
$ . venv/bin/activate

安装较新的 mysql 连接器:

(venv) $ pip install mysql-connector-python>=8.0

将 mysql-utilities 安装到当前的 virtualenv:

(venv) $ pip install .

现在 mysqldiff.py 可以运行了。如果你想在没有激活 virtualenv 的情况下运行,你可以使用它的完整路径:

/path/to/mysql-utilities/venv/bin/mysqldiff.py

windows下的步骤大体相同,除了virtualenv激活:

venv\Scripts\activate.bat
于 2018-11-10T10:26:46.357 回答
1

我遇到了同样的问题并查看了mysql python连接器代码并添加了caching_sha2_password类。它现在对我有用。

1.解决问题从Mysql官网下载mysql-python-connector的源代码,然后安装python(任何版本)。

2.解压下载的mysql-python-connector zip文件,里面有setup.py

3.打开终端并输入python setup.py install

4. build 文件夹将在当前文件夹中创建。转到 build/mysql/ 并复制 authentication.py 文件

5.打开Mysql Utilities ->> bin ->> library.zip,找到mysql connector-> mysql > authentication.pyc文件,删除i,粘贴之前复制的authentication.py文件。

6.完成!

如果您不想弄乱它,可以从此链接下载准备好的文件

这是文件和解释的链接。

https://github.com/rgaraisayev/mysqldiff

于 2019-01-21T19:17:27.523 回答