无法使用 PyMySQL 与远程 MySQL 服务器建立 TLS TCP 连接,其他工具可以使用

2023-12-14

设置一个我想要与中央 MySQL 数据库通信的新服务器,使用 TLS 连接来确保安全

按照如下步骤this我已经能够为我的 MySQL 服务器设置 TLS,我已经创建了几个能够从任何主机 (%) 登录的用户,并且需要 SSL 连接

+------------+-----------+----------+
| user       | host      | ssl_type |
+------------+-----------+----------+
| testuser   | %         | ANY      |
+------------+-----------+----------+

我可以通过使用 HeidiSQL 或 MySQL CLI 工具等工具进行连接来在任何主机上确认这一点 前任:mysql -u testuser -p -h mysql_server_IP这将启动 TLS 连接,由 \s 确认 这排除了我在这个论坛和其他论坛上看到的大多数问题,这些问题是由主机设置为 localhost 引起的。

访问本地数据库时,以下工作正常。当连接到非 TLS 远程数据库服务器时,它也可以正常工作。

import pymysql.cursors

connection = pymysql.connect(host=host,
                             user=user,
                             password=password,
                             db=db,
                             cursorclass=pymysql.cursors.DictCursor)

当尝试使用 require-tls 访问我的服务器时,我收到以下错误pymysql.err.OperationalError: (1045, "Access denied for user 'testuser'@'desktop.example.com' (using password: YES)")

我的其他发现表明该错误是由以下原因引起的: 无效的用户名/密码组合,或者该主机禁止连接。不过,我知道我可以从该主机建立连接,如 CLI 所示。


当连接到只有require_secure_transport = ON在 my.cnf 中,PyMySQL 给出了一个更明显的错误,无法启动 TLS 连接。pymysql.err.InternalError: (3159, 'Connections using insecure transport are prohibited while --require_secure_transport=ON.'但如果 MySQL 用户本身需要 SSL,您会从上面的问题中得到更通用的权限被拒绝错误。

On the github 问题跟踪器提到提供 CA .pem 文件。如果您无权访问这些文件并希望隐式信任自签名证书。这docs提及-ssl标志,它允许您传入各种证书文件的路径。

但是,通过传递有效的字典,无需任何有效密钥,您就可以有效地覆盖信任自签名证书。例子:

connection = pymysql.connect(host=host,
                             user=user,
                             password=password,
                             db=db,
                             cursorclass=pymysql.cursors.DictCursor,
                             ssl={"fake_flag_to_enable_tls":True})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法使用 PyMySQL 与远程 MySQL 服务器建立 TLS TCP 连接,其他工具可以使用 的相关文章

  • 当我有自定义身份验证模型时,如何登录 Django Rest 可浏览 API?

    我有一个自定义用户模型 如下所示account models py from django contrib auth modles import AbstractUser from django db models signals impo
  • 获取 .wav 文件长度或持续时间

    我正在寻找一种方法来找出 python 中音频文件 wav 的持续时间 到目前为止我已经了解了 pythonwave图书馆 mutagen pymedia pymad我无法获取 wav 文件的持续时间 Pymad给了我持续时间 但它不一致
  • Python 切片对象和 __getitem__

    python 中是否有内部的东西来处理传递给的参数 getitem 不同 并自动转换start stop step构造成切片 这是我的意思的演示 class ExampleClass object def getitem self args
  • 从文本文件中删除特定字符

    我对 Python 和编码都很陌生 我当时正在做一个小项目 但遇到了一个问题 44 1 6 23 2 7 49 2 3 53 2 1 68 1 6 71 2 7 我只需要从每行中删除第三个和第六个字符 或者更具体地说 从整个文件中删除 字符
  • Virtualenv 在 OS X Yosemite 上失败并出现 OSError

    我最近更新到 OSX Yosemite 现在无法使用virtualenv pip 每当我执行 virtualenv env 它抛出一个 OSError Command Users administrator ux env bin pytho
  • 在python中将数据库表写入文件的最快方法

    我正在尝试从数据库中提取大量数据并将其写入 csv 文件 我正在尝试找出最快的方法来做到这一点 我发现在 fetchall 的结果上运行 writerows 比下面的代码慢 40 with open filename a as f writ
  • 将 numpy 数组合并为单个 int

    numpy 数组怎么可以这样 10 22 37 45 转换为单个 int32 数字 如下所示 10223745 这可以工作 gt gt gt int join map str 10 22 37 45 10223745 基本上你使用map s
  • Mypy 无法从文字列表推断项目的类型

    我有一个变量x和一个文字列表 例如 0 1 2 我想转换x这些文字之一 如果x在列表中 我将其退回 否则我返回一个后备值 from typing import Literal Set Foo Literal 0 1 2 foos Set F
  • 使用 Boto3 以字符串形式打开 S3 对象

    我知道使用 Boto 2 可以使用以下命令将 S3 对象作为字符串打开 get contents as string http boto readthedocs org en latest ref file html highlight c
  • 使用python从gst管道抓取帧到opencv

    我在用着OpenCV http opencv org 和GStreamer0 10 我使用此管道通过自定义套接字通过 UDP 接收 MPEG ts 数据包sockfd由 python 提供并显示它xvimagesink 而且效果很好 以下命
  • Arcpy 模数在 Pycharm 中不显示

    如何将 Arcpy 集成到 Pycharm 中 我尝试通过导入模块但它没有显示 我确实知道该模块仅适用于 2 x python arcpy 在 PyPi Python 包索引 上不可用 因此无法通过 pip 安装 要使用 arcpy 您需要
  • Python将文本文件解析为嵌套字典

    考虑以下数据结构 HEADER1 key value key value HEADER2 key value key value HEADER3 key value HEADER4 key value key value 原始数据中没有缩进
  • 根据其他单元格值更改多个单元格值

    我想更改包含的单元格moving to movingToOpenor movingToClose基于下一个单元格中给出的状态 有时循环会被中断并且不会从open to close or close to open 这是我当前的数据框 Dat
  • 两个不同长度的数据帧的列之间的余弦相似度?

    我在 df1 中有文本列 在 df2 中有文本列 df2 的长度将与 df1 的长度不同 我想计算 df1 text 中每个条目与 df2 text 中每个条目的余弦相似度 并为每场比赛给出分数 输入样本 df1 mahesh suresh
  • Plotly:如何检查基本图形结构(版本 4)

    对于旧版本的plotly 例如在 Jupyterlab 中 您可以简单地运行figure像这样检查你的图形的基础知识 Ouput data marker color red size 10 symbol 104 mode markers l
  • 查找 Pandas DF 行中的最短日期并创建新列

    我有一个包含多个日期的表 有些日期将为 NaN 我需要找到最旧的日期 所以一行可能有 DATE MODIFIED WITHDRAWN DATE SOLD DATE STATUS DATE 等 因此 对于每一行 一个或多个字段中都会有一个日期
  • 为什么 __dict__ 和 __weakref__ 类从未在 Python 中重新定义?

    类创建似乎从来没有re 定义 dict and weakref class属性 即 如果它们已经存在于超类的字典中 则它们不会添加到其子类的字典中 但始终re 定义 doc and module class属性 为什么 gt gt gt c
  • 检测是否从psycopg2游标获取?

    假设我执行以下命令 insert into hello username values me 我跑起来就像 cursor fetchall 我收到以下错误 psycopg2 ProgrammingError no results to fe
  • 如何在亚马逊 EC2 上调试 python 网站?

    我是网络开发新手 这可能是一个愚蠢的问题 但我找不到可以帮助我的确切答案或教程 我工作的公司的网站 用 python django 构建 托管在亚马逊 EC2 上 我想知道从哪里开始调试这个生产站点并检查存储在那里的日志和数据库 我有帐户信
  • 用于插入或替换 URL 参数的 Django 模板标签

    有人知道 Django 模板标签可以获取当前路径和查询字符串并插入或替换查询字符串值吗 例如向 some custom path q how now brown cow page 3 filter person 发出请求 电话 urlpar

随机推荐

  • 即使导出后,process.env 变量也未定义

    我正在编写一个 Node js Express 应用程序 并希望使用环境变量来设置服务器应运行的端口 但是 我似乎无法得到process env PORT阅读我的PORT环境变量 我已经使用定义了 PORT 环境变量export像这样 ex
  • 如何使用 Maven 插件从带有注释的现有实体生成 DDL?

    我有 Maven 项目 我想从现有实体生成 DDL 我怎样才能做到这一点 有没有可以生成 DDL 的 Maven 插件 我正在使用JPA 打开jpa openjpa maven plugin 插件提供了一个目标sql 使用此目标 可以从现有
  • 禁用 Windows 窗体上的所有事件

    有没有办法暂时禁用 Windows 窗体上的所有事件 我遇到的情况是 辅助线程上的处理被主线程上的事件破坏 主线程事件正在修改数据绑定到辅助线程使用的变量的控件的内容 寻找一种方法来 锁定 表单 直到辅助线程上的处理完成 显然 将处理移至主
  • 非规格化向量

    如何对已标准化的向量进行反标准化以获得标准化之前的原始值 例如 vec 0 5 1 0 0 0 vec length sqrt vec x 2 vec y 2 vec z 2 vec normalized vec x vec length
  • Visual Studio 设计时属性 - 表单列表下拉菜单

    编辑 需要明确的是 我知道如何通过反射获取表单列表 我更关心设计时属性网格 我有一个具有 Form 类型公共属性的用户控件 我希望能够在设计时从下拉列表中选择一个表单 我想从一组命名空间填充表单下拉列表 UI Foo Forms 如果您拥有
  • 如何从 Web 扩展弹出 JavaScript 中知道浏览器是 Chrome 还是 Firefox?

    我正在使用chromeChrome 和 Firefox 的命名空间 但想知道哪个浏览器正在运行网络扩展 扩展资源的链接在 Chrome 和 Firefox 中具有不同的方案 const isFirefox chrome runtime ge
  • 使用 float 格式说明符打印 int 变量

    int main int a 5 float b 7 5 printf d f n a b printf d f n a a return 0 当我在 gcc 编译器中编译它时 输出是 5 7 500000 5 7 500000 但是在 V
  • SQL Server中for循环的语法

    a 的语法是什么forSQL 中的循环 没有 for 循环 只有 while 循环 DECLARE i int 0 WHILE i lt 20 BEGIN SET i i 1 do some work END
  • HuggingFace 评估微调的零样本模型

    我正在微调 HuggingFacefacebook bart large mnli为了满足我的需要 我使用以下参数 training args TrainingArguments output dir model directory out
  • 使用深色透明度使标题栏和视图控制器无缝连接

    您好 我一直在互联网上查找并找到了有关此主题的各种有用信息 但似乎没有一个有效 if trying to get something like this 标题栏和窗口其余部分混合的地方 从互联网上得到的代码 iv 到目前为止在我的 view
  • 使用 php simplexml 显示 XML 数据

    我有一段 XML 如下
  • 如何更改 Chart.js 中使用的插值器?

    我一直在寻找一些有关图表库的替代方案 而符合我需求的方案是Chart js 但是 我无法使用它 因为 Chart js 中使用的插值器与 EJS 模板中使用的插值器相同Express like 我使用过其他一些库 例如下划线 js您可以在其
  • 我可以将 WCF DataContract 添加到复杂类型吗?

    我有一个复杂的数据类型 包括许多函数 以及常用的 get 和 get 方法 如果我可以使用 WCF 那么我的生活将会变得更加轻松 这样我的客户端也可以使用这种数据类型 Do I 忽略所有操作 将 DataMemeber 仅在需要的地方 将相
  • GDB 单步执行动态链接器(ld.so) 代码

    我想在我的正常使用中使用 ld so 的代码c代码 我正在尝试通过 GDB 中的代码流TUI当您单步执行代码时 您可以看到源代码和汇编代码 为此我还安装了libc dbg binutils source来自 ubuntu 包管理器的包 GD
  • 无法安装 Jekyll - “致命错误:找不到‘openssl/ssl.h’文件”

    我正在尝试在 Mac OS 上本地托管 Jekyll 站点 下载 Jekyll 后gem install jekyll我遇到了错误 current directory Users main rvm gems ruby 3 0 0 gems
  • 在 Oracle 中调用另一个存储过程

    有谁知道一种方法 或者即使有可能 从另一个存储过程中调用存储过程 如果是这样 你会怎么做 这是我的测试代码 SET SERVEROUTPUT ON DROP PROCEDURE test sp 1 DROP PROCEDURE test s
  • 为什么 Jasper Reports 在服务器中显示空报告,但在 jasper studio 中正确生成

    我正在使用 Jasper Studio 6 6 0 和 Jasper 服务器 7 1 我使用来自指定 URL 的图像创建了一个简单的报告 它在 Jasper Studio 中正确生成 但在服务器中显示为空 请参考附图 Server Scre
  • UIView可以复制吗?

    简单地使用这种方式 UIView view2 view1 copy view1 existed 这将导致模拟器无法启动此应用程序 尝试保留 UIView view2 view1 retain view1 existed modify vie
  • 自动布局问题 Swift 3.0

    我已经Autolayout这个屏幕截图使用 我想当我点击textView textView 将始终位于键盘上方 而且我正在使用自定义NavigationBar 我已经用过IQKeyBoardManagerSwift它正在工作 但是我的Nav
  • 无法使用 PyMySQL 与远程 MySQL 服务器建立 TLS TCP 连接,其他工具可以使用

    设置一个我想要与中央 MySQL 数据库通信的新服务器 使用 TLS 连接来确保安全 按照如下步骤this我已经能够为我的 MySQL 服务器设置 TLS 我已经创建了几个能够从任何主机 登录的用户 并且需要 SSL 连接 user hos