繁体   English   中英

带有 mysql 连接器的 python 中的回溯错误

[英]Traceback error in python with mysql connector

我收到以下错误。 我对 sql 和或 python 一点也不擅长,所以我会很感激一个简化的答案。

Traceback (most recent call last):
  File "C:\Users\samra\Desktop\folder\1.py", line 2, in <module>
    con = sq.connect(host="localhost",user="root",passwd="root",database="bank")
  File "C:\Users\samra\AppData\Local\Programs\Python\Python39\lib\site-packages\mysql\connector\__init__.py", line 179, in connect
    return MySQLConnection(*args, **kwargs)
  File "C:\Users\samra\AppData\Local\Programs\Python\Python39\lib\site-packages\mysql\connector\connection.py", line 95, in __init__
    self.connect(**kwargs)
  File "C:\Users\samra\AppData\Local\Programs\Python\Python39\lib\site-packages\mysql\connector\abstracts.py", line 716, in connect
    self._open_connection()
  File "C:\Users\samra\AppData\Local\Programs\Python\Python39\lib\site-packages\mysql\connector\connection.py", line 208, in _open_connection
    self._do_auth(self._user, self._password,
  File "C:\Users\samra\AppData\Local\Programs\Python\Python39\lib\site-packages\mysql\connector\connection.py", line 137, in _do_auth
    packet = self._protocol.make_auth(
  File "C:\Users\samra\AppData\Local\Programs\Python\Python39\lib\site-packages\mysql\connector\protocol.py", line 99, in make_auth
    packet += self._auth_response(client_flags, username, password,
  File "C:\Users\samra\AppData\Local\Programs\Python\Python39\lib\site-packages\mysql\connector\protocol.py", line 58, in _auth_response
    auth = get_auth_plugin(auth_plugin)(
  File "C:\Users\samra\AppData\Local\Programs\Python\Python39\lib\site-packages\mysql\connector\authentication.py", line 190, in get_auth_plugin
    raise errors.NotSupportedError(
mysql.connector.errors.NotSupportedError: Authentication plugin 'caching_sha2_password' is not supported

我的代码是:

import mysql.connector as sq
con = sq.connect(host="localhost",user="root",password="root",database="bank")
def openacc():
    n=input("Enter name : ")
    ac=input("Enter account no. : ")
    db=input("Enter D.O.B : ")
    p=input("Enter phone number : ")
    ad=input("Enter Address : ")
    ob=int(input("Enter opening balance : "))
    data1=input(n,ac,db,p,ad,ob)
    data2=input(n,ac,ob)
    sql1="insert into account value(%s,%s,%s,%s,%s,%s)"
    sql2="insert into account value(%s,%s,%s,%s,%s,%s)"
    c=con.cursor()
    c.execute(sql1,data1)
    c.execute(sql2,data2)
    con.commit()
    print("data entered successfully")
    main()

我已经检查过,我的数据库的密码和用户是正确的,因此不应该有错误。 请帮忙。

在 MySQL 8.0 中,caching_sha2_password 是默认的身份验证插件,而不是 mysql_native_password。 尝试这个

con = sq.connect(host="localhost",user="root",password="root",database="bank",auth_plugin='mysql_native_password')

MYSQL CLI中输入

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '{Password}';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM