带有 MySQL 8 服务器的 MySQL 实用程序

Posted

技术标签:

【中文标题】带有 MySQL 8 服务器的 MySQL 实用程序【英文标题】:MySQL Utilities with MySQL 8 Server 【发布时间】:2019-04-05 04:44:43 【问题描述】:

作为我们构建过程的一部分,我们使用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。我们也知道答案可能就像升级连接器版本一样简单,但我们不知道如何尝试。

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

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

注意:

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

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

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

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

【问题讨论】:

如何通过 oracle 网站上的安装程序安装 MySQL Utilities? @georgexsh 将安装信息编辑到问题中。在 Windows 上,我们使用 Oracle 安装程序。在 Amazon Linux 上,我们使用 yum。谢谢! 老实说,a) 安装 Python 2.7,b) 安装 mysql-connector(从 Oracle 下载)然后 c) git clone 实用程序项目并运行 @987654331 会容易得多@在项目目录中。您可能必须 apply a bug fix Oracle 一直忽略(请参阅 bug report 了解您为什么需要它)。 另一种方法是安装 cx_Freeze,即 Microsoft Visual C++ 编译器 9.0 for Python 2.7 包,获取 mysql-connector 源代码和 mysql 客户端头文件,然后按照package.py script 中的说明进行操作mysql-utilities 发行版将所有这些放在一起,然后交叉手指运行 python package.py build 并希望输出的任何内容都可以在某处有用。然后还安装 MS Visual C++ 可再发行包。 (后者见cx-freeze.readthedocs.io/en/latest/…,cx-freeze.readthedocs.io/en/latest/…package.py 命令)。 【参考方案1】:

我已经设法使用some patches 对mysql 8 运行mysqldiff.py

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

$ 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

【讨论】:

【参考方案2】:

我遇到了同样的问题,并查看了 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

【讨论】:

请不要发布不试图回答原始问题的答案。如果您遇到同样的问题,请先阅读其他答案并进行更多研究,如果您仍然遇到困难,请发布一个包含所有相关详细信息的新问题。未回答的将被投票删除。 我添加了如何做的解释 你这么多rgaraisayev。你的解决方案奏效了!我已经为此工作了两天,终于解决了。上帝祝福你!在我摆脱了“sha256_authentication”问题后,我在 mysql 实用程序“tools.py”中有一个“权限被拒绝:“version_check”问题,但我用另一个 SO 救星解决了这个问题。我正在恢复我的文件结构。***摇滚很重要,而且越来越好!如果我能给你 10 分,我会的。非常感谢!!! 很高兴它对您有所帮助。谢谢你的感谢

以上是关于带有 MySQL 8 服务器的 MySQL 实用程序的主要内容,如果未能解决你的问题,请参考以下文章

XtraBackup实现MySQL数据库全量+增量+Binlog恢复库

MySQL 8.0 的 5 个新特性,太实用了!

MySQL 8.0 的 5 个新特性,太实用了!

MySQL 8.0 的 5 个新特性,太实用了!

MySQL 8.0 的 5 个新特性,太实用了!

MySQL 8.0 的 5 个新特性,太实用了!