pymysql: access denied for user 'root'@'localhost'

python3.6+pymysql+mysql8.0

在terminal可以用root账户正常登陆,如下图
图片描述

但是用pymysql登陆报错

import pymysql

connect = pymysql.connect(          #连接数据库服务器
        user = 'root',
        password = 'password',
        host = 'localhost',
        port = 3306,
        db = 'mysql',
        charset = 'utf8'
        )

conn = connect.cursor() 

报错信息
图片描述

创建一个新的user也不行,但是在terminal里面可以正常登陆。
初步判断还是pymysql的问题,但是不知道这个

raise errorcalss(errno,errval)

具体是什么原因造成的。

求教各位大大解惑,谢谢!

阅读 10.1k
5 个回答

今天更新的mysql8,和你遇到了一模一样的问题,不知道你怎么解决的。
我是更换了root密码的认证方式解决的,新版mysql使用的caching_sha2_password,换成mysql_native_password我就可以连上了。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxxxx';

看了你的报错信息是没有使用password,很奇怪,直接用你的代码,我的能正常访问,你在终端直接进入python shell,然后执行一下试试?

更改你的mysql密码试试, 上面的错误提示,你没有输入密码.

有时候,有些密码我用navicate也链接不上,这种问题很奇怪

参数password换成passwd

grant 授权一下

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏