python - MySQL 实用程序与 MySQL 8 服务器

标签 python mysql mysql-connector-python mysql-8.0

作为构建过程的一部分,我们使用 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 安装。

注意:

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

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

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

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

最佳答案

我已经设法针对 mysql 8 运行 mysqldiff.pysome patches :

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

$ 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

关于python - MySQL 实用程序与 MySQL 8 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53093152/

相关文章:

Python TypeError - 预期字节但在尝试创建签名时得到 'str'

mysql - 'unique' 列字段是否暗示了 MySQL 的索引,如果是,为什么?

php - 使用 php 显示我的数据库中的相关记录

mysql - 创建 MySQL 表时出现编程错误

Python2.7 中的 MySQL 连接池无法按预期工作。连接池的 close() 函数面临问题

mysql - Python - Mac OSX 10.10 中的 MySQL 连接器错误

python - 我怎样才能 "map"一个字典只改变 Python 中的值

python - 一次从多个变量中减去

python - 你应该导入你在 Python 中使用的所有类吗?

java - 将 CSV 文件导入 MySQL 表