[PyMySQL&MySQL8.0]OperationalError: (1045, ‘Access denied for user ‘root’xxxx

  • 具体报错:OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: NO)")
  • 连接数据库的代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    
    import pymysql
    config = {
        'host': 'localhost',
        'user': 'root',
        'password': 'passwd',
        'db': 'metagene',
    }
    connection = pymysql.connect(**config)
    
  • 明明填写了密码,却提示using password: NO,到 google 各处转了一大圈,终于锁定了问题所在:使用了最新的 MySQL8.0,而

    MySQL8.0 用到了新的密码插件验证方式,5.7叫做mysql_native_password,8.0叫做caching_sha2_password,这种加密方式让很多和MySQL连接的界面工具(如Navicat)或编程语言(如PHP)mysqli接口失效。
    引用自掘金

  • 两种解决办法,一种是使用 mysql 官方实现的 python 接口 mysql-connector-python,一种是将 MySQL 降级为 5.7 版本。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值