python连接mysql数据库报错pymysql.err.OperationalError

mac2025-05-28  2

一、报错信息

pymysql.err.OperationalError: (1045, “Access denied for user ‘root’@‘localhost’ (using password: YES)”)

Traceback (most recent call last): File "G:/PycharmProjects/GUI_Pro/py_mysql/pracV1.py", line 20, in <module> database = 'localhost_3306' File "G:\PycharmProjects\GUI_Pro\venv\lib\site-packages\pymysql\__init__.py", line 94, in Connect return Connection(*args, **kwargs) File "G:\PycharmProjects\GUI_Pro\venv\lib\site-packages\pymysql\connections.py", line 325, in __init__ self.connect() File "G:\PycharmProjects\GUI_Pro\venv\lib\site-packages\pymysql\connections.py", line 599, in connect self._request_authentication() File "G:\PycharmProjects\GUI_Pro\venv\lib\site-packages\pymysql\connections.py", line 861, in _request_authentication auth_packet = self._read_packet() File "G:\PycharmProjects\GUI_Pro\venv\lib\site-packages\pymysql\connections.py", line 684, in _read_packet packet.check_error() File "G:\PycharmProjects\GUI_Pro\venv\lib\site-packages\pymysql\protocol.py", line 220, in check_error err.raise_mysql_exception(self._data) File "G:\PycharmProjects\GUI_Pro\venv\lib\site-packages\pymysql\err.py", line 109, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")

二、代码:

import pymysql #连接数据库 conn = pymysql.Connect( host = 'localhost', port = 3306, #端口号 user = 'root', #服务器上mysql的用户名,安装时填写确认的 password = '123456', #服务器上mysql的密码,安装时填写确认的 database = 'mysql_sun' #服务器上的数据库名之一,选择需要连接的那个数据库 #charset = 'utf8' ) #获取游标,使用cuisor方法 cursor = conn.cursor() #用excute方法执行sql语句 sql = 'select * from user' cursor.execute(sql) #使用fetchall方法获取全部数据,fetchone方法获取一条数据, res = cursor.fetchall() print(res) #关闭数据库 conn.close()

三、原因分析: 1、可能是密码错误 2、可能是因为:新版mysql使用的caching_sha2_password认证方式,换成mysql_native_password就可以。 数据库:

四、解决: 1、修改数据库密码 2、更换密码的认证方式。 步骤: (1)是在cmd命令行连接mysql, 通过

mysql -u root -p root # -u 后是数据库名 # -p 后是密码

(2)然后输入

ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘dong1990’; 再跑python脚本就没问题了。

五、以上错误是因为一开始密码写错

最新回复(0)