pythonmysqlmysql-workbench

caching sha2 password is not supported mysql


I'm trying to get my Python program to insert data into MySQL and I followed a guide however I keep getting the error below.

"Authentication plugin '{0}' is not supported".format(plugin_name)) mysql.connector.errors.NotSupportedError: Authentication plugin 'caching_sha2_password' is not supported"

Have I missed a setting in MySQL server or does Python not support this yet?

I think I can just change the password type but MySQL doesn't want to let me for some reason all users with caching_sha2_password can't be changed and when I create a new user and select SHA256 password I get the error creating account @% the password hash doesn't have the expected format. Check if the correct password algorithm is being used with the PASSWORD() function.

#!/user
# -*- coding: utf-8 -*-

from __future__ import print_function
import urllib.request
import numpy as np
import mysql.connector as mysql

from datetime import date, datetime, timedelta

cnx = mysql.connect(user='root', password='password', database='powergrid')

cursor = cnx.cursor()

tomorrow = datetime.now().date() + timedelta(days=1)
 
idfueltype= cursor.lastrowid

add_fueltype = ("INSERT INTO fueltype"
                "(idfueltype, fueltypecol, demand)"
               "VALUES(%s, %s, %s)")

fueltype_data = (idfueltype, 'coal', 10000)

cursor.execute(add_fueltype, fueltype_data)

cnx.commit()

cursor.close()
cnx.close()

Solution

  • I managed to fix this. In the end I was using a version of python in Anaconda which just wouldn't install version 8.0.11 of the python connector, I managed to get 8.0.11 installed on my vanilla python 3.6.5 using windows PowerShell (in admin privileges) and using pip install MySQL-connector-python (I think I also had to update pip from 9 to 10.