(2059,“Authentication Plugin 'caching_sha2_password'”) when running server connected with MYSQL database on Django

后端 未结 3 1598
盖世英雄少女心
盖世英雄少女心 2020-12-07 06:06

I want to configure my django project in order to connect it with database in MYSQL I created with workbench 8.0,
and then I want to r

相关标签:
3条回答
  • 2020-12-07 06:44

    This is probably not a problem in your python code, but in the python connector. The caching_sha2_password plugin is now the default auth plugin and clients have to support it in order to connect. So, the best solution is to update your python connector. An alternative way is to disable this plugin, but that's something I don't recommend as it lowers your server's security.

    0 讨论(0)
  • 2020-12-07 07:01

    PyMySQL added support for caching_sha2_password in 0.9.0, though there was a Py2 error fixed in 0.9.1.

    Also noted in the install instructions, for caching_sha2_password there is the additional requirement:

    python3 -m pip install PyMySQL[rsa]
    
    0 讨论(0)
  • 2020-12-07 07:05

    I think I solved it.

    By following this thread

    https://stackoverflow.com/a/21740692/7658051

    In settings.py, at the DATABASES entry, I substituted

    'ENGINE': 'django.db.backends.mysql'
    

    with

    'ENGINE': 'mysql.connector.django',
    

    and again, as specified here,

    https://django-mysql.readthedocs.io/en/latest/checks.html#django-mysql-w003-utf8mb4

    i added also

    'OPTIONS': {
                # Tell MySQLdb to connect with 'utf8mb4' character set
                'charset': 'utf8mb4',
            },
            # Tell Django to build the test database with the 'utf8mb4' character set
            'TEST': {
                'CHARSET': 'utf8mb4',
                'COLLATION': 'utf8mb4_unicode_ci',
            }
    

    and then if I run

    python manage.py runserver
    

    It seems to work, even if I cannot access http://127.0.0.1:8000/admin , because I am connected to a legacy database, so I still have to inspect db and stuff I still have to learn.

    As second proof that the connection is now working, when I run

    connect_to_mysql_2.py
    

    (See (2059,“Authentication Plugin 'caching_sha2_password'”) when running server connected with MYSQL database on Django)

    I finally get

    mysql.connector.connection_cext.CMySQLConnection object at 0x000001DFB7521550

    So I really think this time the connection is on.

    0 讨论(0)
提交回复
热议问题