好名字都让谁起了 2023-10-19 19:32 采纳率: 100%
浏览 1
已结题

perl DBI mysql_navite_password认证

perl:5.16.3
DBI:1.622
DBD:4.050
连接mysql,默认发送cache_sha2_password; 我现在需要程序发送mysql_native_password,我连接的是代理,仅仅支持这种方式,另外,使用的密码也是mysql_native_password的,我尝试了一些配置,但是没有生效,我只可以改perl相关的

use DBI;

# 连接数据库
my $dbh = DBI->connect(
    "DBI:mysql:database=<数据库名>;host=<主机名>;port=<端口>",
    "<用户名>",
    "<密码>",
    {
        #下面是我的尝试,一次配置一条,全都没有用,也不会报错,抓包发现还是走的cache_sha2_password
       # 我在DBD源码中找到mysql_skip_secure_auth 这个配置,配置后会直接报错说不支持这个参数
        enable_mysql_native_password => 1, 
       auth_plugin => mysql_native_password,
    }
) or die "无法连接数据库:$DBI::errstr";

  • 写回答

2条回答 默认 最新

  • 好名字都让谁起了 2023-10-25 09:07
    关注

    通过源码发现,DBD代码中,该版本目前没有配置该选项
    解压缩DBD安装包,找到文件dbdimp.c,1712行,新增mysql_options(sock, MYSQL_DEFAULT_AUTH, "mysql_native_password");
    代表强制走mysql_native_password认证;如果懂得一些C语音,可以参考源码这一行附近的配置,写成可配置项,由于本人只需要一种认证方式,所以直接写死;修改完成后,需要手动编译重新安装DBD,然后就可以正常使用

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月2日
  • 已采纳回答 10月25日
  • 创建了问题 10月19日

悬赏问题

  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持