不支持RSA加密-使用django mysql和docker缓存sha 2密码

sczxawaw  于 2022-10-31  发布在  Mysql
关注(0)|答案(2)|浏览(368)

我试图使用Docker连接Mysql和Django,但我收到了这个错误

2061, 'RSA Encryption not supported - caching_sha2_password plugin was built with GnuTLS support'.

我尝试更改用户并创建数据库

// create a user //

CREATE USER 'user'@'localhost' IDENTIFIED BY 'user';
GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' WITH GRANT OPTION;
CREATE USER 'user'@'%' IDENTIFIED BY 'user';
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' WITH GRANT OPTION;

// create a database //

CREATE DATABASE user_db;

但仍然显示sqme错误消息
中settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'user_db',
        'USER': 'user',
        'PASSWORD': 'user',
        'HOST': 'db',
        'PORT': '3306',
    }
}

在对接合成中:

db:
    image: mysql:latest
    environment:
        MYSQL_DATABASE: 'user_db'
        MYSQL_USER: 'user'
        MYSQL_PASSWORD: user
        MYSQL_ROOT_PASSWORD: root
    volumes:
        - ./data/mysql/db:/var/lib/mysql
    ports: 
        - 3306:3306

谢谢你帮助。

5rgfhyps

5rgfhyps1#

我已经解决了这个问题,将连接器改为mysql-connector-python==8.0.26,而不是mysqlclient==2.0.3
此外,连接设置

DATABASES = {
    'default': {
        #'ENGINE':   'django.db.backends.mysql',
        'ENGINE':   'mysql.connector.django',
        'NAME':     getenv('MYSQL_DATABASE'),
        'USER':     getenv('MYSQL_USER'),
        'PASSWORD': getenv('MYSQL_PASSWORD'),
        'HOST':     'db',
        'PORT':     getenv('MYSQL_PORT', 3306),
        'OPTIONS': {
            'auth_plugin': 'mysql_native_password'
        }
    }
}
kcrjzv8t

kcrjzv8t2#

似乎是Debian版本的问题。将“FROM”python图像设置为3.10.8-slim-bullseye允许我获得:caching_sha2_password、MySql-8、mysqlclient原生驱动程序。

FROM python:3.10.8-slim-bullseye

相关问题