Authentication plugin 'caching_sha2_password' is not supported

Question:

I am trying to connect to a MySQL server with python connector. I created a new user lcherukuri with the authentication plugin mysql_native_password.

But I got the error

mysql.connector.errors.NotSupportedError: Authentication plugin ‘caching_sha2_password’ is not supported

Can someone help me?

import mysql.connector

cnx = mysql.connector.connect(user='lcherukuri', password='password',
                              host='127.0.0.1',
                              database='test')
cnx.close()

enter image description here

Asked By: lch

||

Answers:

Per Caching SHA-2 Pluggable Authentication

In MySQL 8.0, caching_sha2_password is the default authentication plugin rather than mysql_native_password.

You’re using mysql_native_password, which is no longer the default. Assuming you’re using the correct connector for your version you need to specify the auth_plugin argument when instantiating your connection object

cnx = mysql.connector.connect(user='lcherukuri', password='password',
                              host='127.0.0.1', database='test',
                              auth_plugin='mysql_native_password')

From those same docs:

The connect() method supports an auth_plugin argument that can be used to force use of a particular plugin. For example, if the server is configured to use sha256_password by default and you want to connect to an account that authenticates using mysql_native_password, either connect using SSL or specify auth_plugin='mysql_native_password'.

Answered By: Ben

I had the same problem and passing auth_plugin='mysql_native_password' did not work, because I accidentally installed mysql-connector instead of mysql-connector-python (via pip3). Just leaving this here in case it helps someone.

Answered By: ozgeneral

This question is already answered here and this solution works.

caching sha2 password is not supported mysql

Just try this command :

pip install mysql-connector-python
Answered By: Anupriya Jaju

You can go to Settings->Project->Project Interpreter and here install latest version of mysql-connector-python package. In my case it was mysql-connector-python 8.0.15.

Answered By: PacuS

I ran into the same problem as well.
My problem was, that I accidentally installed the wrong connector version.
Delete your currently installed version from your file system (my path looks like this: C:Program FilesPython36Libsite-packages) and then execute
“pip install mysql-connector-python”.
This should solve your problem

Answered By: coding_tim

None of the above solution work for me. I tried and very frustrated until I watched the following video:
https://www.youtube.com/watch?v=tGinfzlp0fE

pip uninstall mysql-connector work on some computer and it might not work for other computer.

I did the followings:

The mysql-connector causes problem.

  1. pip uninstall mysql-connector

    The following may not need but I removed both connector completely.

  2. pip uninstall mysql-connector-python

    re-install mysql-conenct-python connector.

  3. pip install mysql-connector-python

Answered By: Peter Chen

Modify Mysql encryption

ALTER USER 'lcherukuri'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Answered By: Kaustuv

I had this same issue but my resolution was different because this didn’t completely work.

I found this on a GitHub forum – copy and paste this into your terminal. You don’t have to change your password; it can be the exact same.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '{NewPassword}';

check your settings using this

select Host,User,plugin from mysql.user;
Answered By: Kori Vernon

i try to resolve this error and finally install PyMySQL instead of mysql library
and it’s working properly.

thanks.

Answered By: Manouchehr Rasouli

If you are looking for the solution of following error

ERROR: Could not install packages due to an EnvironmentError: [WinError 5] Acces
s is denied: ‘D:softwaresspiderLibsite-packageslibmysql.dll’
Consider using the --user option or check the permissions.

The solution:
You should add --user if you find an access-denied error.

 pip install --user mysql-connector-python

paste this command into cmd and solve your problem

Answered By: Farrukh

To have a more permanent solution without going through your code and modifying whatever needs to be modified:
Per MySQL 8 documentation, easiest way to fix this is to add the following to your MySQL d file -> restart MySQL server.

This worked for me!

If your MySQL installation must serve pre-8.0 clients and you encounter compatibility issues after upgrading to MySQL 8.0 or higher, the simplest way to address those issues and restore pre-8.0 compatibility is to reconfigure the server to revert to the previous default authentication plugin (mysql_native_password). For example, use these lines in the server option file:

[mysqld]
#add the following file to your MySQLd file
    default_authentication_plugin=mysql_native_password
Answered By: FlyingZebra1

Please install below command using command prompt.

pip install mysql-connector-python

enter image description here

Answered By: Vishal

I had an almost identical error:

Error while connecting to MySQL: Authentication plugin 'caching_sha2_password' is not supported

The solution for me was simple:

My db username/password creds were incorrect. The error was not descriptive of the problem, so I thought I would share this in case someone else runs into this.

Answered By: lace chinzmeyer

I uninstalled mysql-connector (I installed following tutorial on w3schools tutorial) and installed mysql-connector-python instead. It worked.

Answered By: Oleko Dundich

I was facing the same error for 2 days, then finally I found a solution. I checked for all the installed connectors using pip list and uninstalled all the connectors. In my case they were:

  1. mysql-connector
  2. mysql-connector-python
  3. mysql-connector-python-rf

Uninstalled them using pip uninstall mysql-connector and finally downloaded and installed the mysql-connector-python from MySQL official website and it works well.

Answered By: Pratika
  1. Install mysql connector using the below command.

    pip install mysql-connector-python-rf

  2. Use the command to set the privileges.

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY
    'very_strong_password';
    FLUSH PRIVILEGES;

  3. Use the python command to connect to mysql database

    mydb = mysql.connector.connect(
    host="localhost",
    user="root",
    passwd="very_strong_password",
    auth_plugin='mysql_native_password')

I also got a similar error

  File "C:UsersUserAppDataLocalProgramsPythonPython37-32libsite-packagesmysqlconnectorauthentication.py", line 191, in get_auth_plugin
    "Authentication plugin '{0}' is not supported".format(plugin_name))
mysql.connector.errors.NotSupportedError: Authentication plugin 'caching_sha2_password' is not supported

You have probably installed mysql-connector instead of mysql-connector-python. So you need to install it again for python3:

pip3 install mysql-connector-python
Answered By: WinHtut

Using MySql 8 I got the same error when connecting my code to the DB, using the pip install mysql-connector-python did solve this error.

Answered By: simomedx

pip3 install mysql-connector-python did solve my problem as well. Ignore using mysql-connector module.

Answered By: TF Tan

Use pip install mysql-connector-python

Then connect like this:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",               #hostname
  user="Harish",                   # the user who has privilege to the db
  passwd="Harish96",               #password for user
  database="Factdb",               #database name
    auth_plugin = 'mysql_native_password',

)
Answered By: Sarath Chandran K

For those who couldn’t work out because they installed mysql-connector first, I did the following:

1.First on CMD go to the path of ‘pip’

2.Use ‘pip list’ command

3.There would be three packages installed namely six, protobuf and mysql-connector

4.Uninstall each of them separately

5.Now freshly install the mysql-connector-python module

This worked out for me

Answered By: Ranbeer Malhotra

pip install -U mysql-connector-python this worked for me, if you already have installed mysql-connector-python and then follow https://stackoverflow.com/a/50557297/6202853 this answer

Answered By: Chen Wang

This seems to be a problem with the mysql-connector package. Uninstall and install the mysql-connector-python package instead.

sudo pip uninstall mysql-connector
sudo pip install mysql-connector-python

Alternatively, you could use the mysql-connector package with auth_plugin variable shown the following python code

mysql.connector.connect(host='localhost',port="3306",user='user',password='pass',database='dbname',auth_plugin='myql_native_password')

I think in either case, you also need to setup your SQL database user with the mysql_native_password

alter user 'user'@'localhost' identified with mysql_native_password by 'password';
Answered By: embulldogs99

I realized that I install mysql-connector instead of mysql-connector-python so run these commands in the terminal

pip3 uninstall mysql-connector
pip3 install mysql-connector-python
Answered By: Varun Agarwal

This did the trick for me:

pip install cryptography
Answered By: HeyMan

It failed with MySQL server version 8.0, but worked with the version 5.7.33
The solution is to use MySQL version 5.7.33

Answered By: Sylvain

if you are looking for connection url or connection string with correct plugin ; then following worked for me


url = 'mysql+mysqlconnector://%s:%s@%s:%s/%s?auth_plugin=mysql_native_password' % (settings['user'], settings['password'], settings['host'], settings['port'], settings['database'])

Answered By: Arsii Rasheed

pip install mysql-connector-python , i hope it work

Answered By: Virendra Patel
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.