Django无法连接到MySQL

时间:2018-12-22 13:32:24

标签: mysql django python-3.x

花了数小时找到正确的连接器以将MySQL与Django连接之后,我无法创建超级用户。错误:

  

django.db.utils.OperationalError :( 2059,“身份验证插件'caching_sha2_password'   无法加载:找不到指定的模块。\ r \ n“)

我尝试设置环境变量settings.configure(),该变量表示设置已配置。数据库信息全部正确输入到settings.py中。

Pycharm能够连接到db,这是在我的django项目中,并且pycharm中的db标题表示Django默认。我不知道这是否意味着我的Django项目已连接到该项目,但我无法创建超级用户或pycharm连接不相关。

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

当我尝试django-admin dbshell时出现此错误:

  

django.core.exceptions.ImproperlyConfigured:请求的设置数据库,但未配置设置。在访问设置之前,您必须定义环境变量DJANGO_SETTINGS_MODULE或调用settings.configure()。

错误中提供的两种解决方案都没有肯定的结果。

尽管解决方案无法解决,但我最后一个问题被标记为重复,这个问题在某些方面也有所不同。无论如何,下面是我尝试使用旧密码安全性时发生的事情。

重新迁移后,我使用了旧式身份验证。全新且更安全的sha2身份验证解决方案将不胜感激。

2 个答案:

答案 0 :(得分:1)

更改您的MySQL用户密码

ALTER USER 'yourusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpassword';

然后将密码输入Django设置文件。希望能解决您的问题。

答案 1 :(得分:0)

使用64位python并使用pip install mysqlclientpip install --only-binary :all: mysqlclient安装mysqlclint正确使用空间。发生此问题的原因可能是python 32位和mysql 64位,并且您已经使用python扩展包安装了mysqlclient。 如果您使用的是MySQL 64位,那么最好使用python 64位。