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()
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'
.
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.
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
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.
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
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
Modify Mysql encryption
ALTER USER 'lcherukuri'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
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;
i try to resolve this error and finally install PyMySQL instead of mysql library
and it’s working properly.
thanks.
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
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
Please install below command using command prompt.
pip install mysql-connector-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.
I uninstalled mysql-connector (I installed following tutorial on w3schools tutorial) and installed mysql-connector-python instead. It worked.
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.
-
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')
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
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.
pip3 install mysql-connector-python
did solve my problem as well. Ignore using mysql-connector module.
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',
)
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
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
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';
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
This did the trick for me:
pip install cryptography
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
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'])
pip install mysql-connector-python , i hope it work
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()
Per Caching SHA-2 Pluggable Authentication
In MySQL 8.0,
caching_sha2_password
is the default authentication plugin rather thanmysql_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 anauth_plugin
argument that can be used to force use of a particular plugin. For example, if the server is configured to usesha256_password
by default and you want to connect to an account that authenticates usingmysql_native_password
, either connect using SSL or specifyauth_plugin='mysql_native_password'
.
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.
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
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.
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
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
Modify Mysql encryption
ALTER USER 'lcherukuri'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
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;
i try to resolve this error and finally install PyMySQL instead of mysql library
and it’s working properly.
thanks.
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
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
Please install below command using command prompt.
pip install mysql-connector-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.
I uninstalled mysql-connector (I installed following tutorial on w3schools tutorial) and installed mysql-connector-python instead. It worked.
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.
-
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')
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
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.
pip3 install mysql-connector-python
did solve my problem as well. Ignore using mysql-connector module.
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',
)
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
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
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';
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
This did the trick for me:
pip install cryptography
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
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'])
pip install mysql-connector-python , i hope it work