sqlalchemy.exc.operationalerror: (pymysql.err.operationalerror) (1045, "access denied for user 'root'@'localhost' (using password: yes)")   

代码如下:

 报错如下:

 报错分析:

1.密码错误   2. 字符编码 错误  3.版本问题 ,4 权限问题

1.密码错误:

可以通过 cmd 尝试登入mysql 如果可以登入可以排除 

mysql  -u root -p 

2.字符编码错误解决方式(很少这种情况):

# SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:Password123$@localhost:3306/Graduationdesign?charset=utf8"

设置编码: ?charset=utf8

3.版本问题,也就是我这个问题,这个bug搞了我一下午 ,想着换个版本试一下结果就可以了

原因可能是:mysql8 版本 与 mysql 5版本的密码加密插件不同的原因:

为了提供更安全的密码加密,
MySQL8.0的首选默认认证插件是caching_sha2_password,
而不是mysql_native_password

解决方法1:.使用mysql 5.7 版本 

2:ALTER USER 'root'@'localhost'  IDENTIFIED WITH mysql_native_password BY 'password';
修改验证方式

4.访问权限 ,用户只允许在本地连接,修改成指定ip 或者 % 

如:

mysql -u root -p

use mysql ;

select host,user from user ;

updata  set  host='%'  where  user ='root'

希望对你有帮助

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐