Python3连接MySQL8.0报错处理与连接代码示例
Python3连接MySQL8.0时,因新版默认使用caching_sha2_password认证方式,常导致连接失败。解决方法是通过命令行将用户认证方式改为mysql_native_password,并配合pymysql库编写连接脚本。本文提供具体的MySQL命令修改步骤及Python连接代码示例,帮助快速解决连接报错问题。
Python3连接MySQL8.0报错处理与连接代码示例
在使用Python3连接MySQL 8.0数据库时,开发者经常会遇到连接失败的报错。这主要是因为MySQL 8.0版本默认采用了更安全的认证插件 caching_sha2_password,而旧版的Python MySQL驱动(如pymysql)可能不支持该认证方式,或者配置不当导致连接被拒绝。
解决这一问题的核心思路是将数据库用户的认证方式修改为兼容旧版驱动的 mysql_native_password。以下是具体的处理步骤和Python连接代码示例。
处理步骤
- 以管理员身份运行命令提示符(cmd):确保拥有修改数据库配置的权限。
- 进入MySQL的bin目录:通过命令行导航到MySQL安装目录下的bin文件夹,例如:
cd C:\Program Files\MySQL\MySQL Server 8.0\bin
- 连接MySQL数据库:使用root用户登录数据库,命令如下:
mysql -uroot -p
- 修改用户认证方式:执行以下SQL语句,将root用户的认证插件改为
mysql_native_password,并设置密码(示例中密码为 '123456',请根据实际情况修改):ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
- 刷新权限并退出:执行
FLUSH PRIVILEGES;使修改生效,然后退出MySQL。




Python连接代码示例
完成上述MySQL配置修改后,可以使用Python的 pymysql 库成功连接数据库。以下是一个完整的连接、查询并关闭连接的示例代码:
# 导入pymysql模块 import pymysql # 连接database conn = pymysql.Connect( host='localhost',#你的数据库地址 port=3306,#端口号 user='root',#用户名 passwd='123456',#密码 db='my_database',#数据库名 charset='utf8') # 得到一个可以执行SQL语句的光标对象 cursor = conn.cursor() # 定义要执行的SQL语句 sql = 'select * from student' # 执行SQL语句 cursor.execute(sql) #打印执行结果 print(cursor.fetchall()) # 关闭光标对象 cursor.close() # 关闭数据库连接 conn.close()

通过上述步骤,您可以解决Python3连接MySQL8.0时的认证报错问题,并成功执行数据库操作。请注意,在实际生产环境中,建议使用更安全的密码管理方式,并避免在代码中硬编码密码。
以上就是Python3连接MySQL8.0报错处理与连接代码示例的详细内容,更多关于Python数据库连接的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









