Authentication plugin 'caching_sha2_password' is not supported
PythonMysqlPython Problem Overview
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()
Python Solutions
Solution 1 - Python
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.
Solution 2 - Python
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'
.
Solution 3 - Python
This question is already answered here and this solution works.
https://stackoverflow.com/questions/50243506/caching-sha2-password-is-not-supported-mysql?rq=1
Just try this command :
pip install mysql-connector-python
Solution 4 - Python
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.
pip uninstall mysql-connector
The following may not need but I removed both connector completely.
pip uninstall mysql-connector-python
re-install mysql-conenct-python connector.
pip install mysql-connector-python
Solution 5 - Python
I also got a similar error
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\mysql\connector\authentication.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
Solution 6 - Python
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;
Solution 7 - Python
Modify Mysql encryption
ALTER USER 'lcherukuri'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Solution 8 - Python
pip3 install mysql-connector-python
did solve my problem as well. Ignore using mysql-connector module.
Solution 9 - Python
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',
)
Solution 10 - Python
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
Solution 11 - Python
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.
Solution 12 - Python
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
Solution 13 - Python
Please install below command using command prompt.
pip install mysql-connector-python
Solution 14 - Python
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
Solution 15 - Python
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:
- mysql-connector
- mysql-connector-python
- 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.
Solution 16 - Python
-
Install mysql connector using the below command.
pip install mysql-connector-python-rf
-
Use the command to set the privileges.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'very_strong_password'; FLUSH PRIVILEGES;
-
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')`
Solution 17 - Python
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';
Solution 18 - Python
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
Solution 19 - Python
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 Files\Python36\Lib\site-packages) and then execute "pip install mysql-connector-python". This should solve your problem
Solution 20 - Python
i try to resolve this error and finally install PyMySQL instead of mysql library and it's working properly.
thanks.
Solution 21 - Python
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:\softwares\spider\Lib\site-packages\libmysql.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
Solution 22 - Python
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.
Solution 23 - Python
I uninstalled mysql-connector (I installed following tutorial on w3schools tutorial) and installed mysql-connector-python instead. It worked.
Solution 24 - Python
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.
Solution 25 - Python
This did the trick for me:
pip install cryptography
Solution 26 - Python
It failed with MySQL server version 8.0, but worked with the version 5.7.33
(I tried the other answers without results)