【问题标题】:Django won't connect to MySQLDjango 无法连接到 MySQL
【发布时间】:2019-05-22 14:12:55
【问题描述】:

在花费数小时寻找正确的连接器来连接 MySQL 和 Django 之后,我无法创建超级用户。错误:

django.db.utils.OperationalError: (2059, "Authentication plugin 'caching_sha2_password' 无法加载:找不到指定的模块。\r\n")

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

虽然 Pycharm 能够连接到数据库,但这是在我的 django 项目中,并且 pycharm 中的数据库标题表示 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:请求设置 DATABASES,但未配置设置。您必须在访问设置之前定义环境变量 DJANGO_SETTINGS_MODULE 或调用 settings.configure()。

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

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

重新迁移后,我可以使用旧版身份验证。非常感谢更新和更安全的 sha2 身份验证的解决方案。

【问题讨论】:

  • 你迁移你的数据库了吗?
  • @JPQ 我刚刚尝试重新迁移,它有所帮助。尽管我对使用旧密码安全性感到不舒服。您是否有可能的 sha2 身份验证解决方案?
  • 对不起...我不知道

标签: mysql django python-3.x


【解决方案1】:

更改您的 MySQL 用户密码

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

然后将您的密码放在 Django 设置文件中。希望这能解决您的问题。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-02-05
      • 2018-06-10
      • 2019-04-11
      • 1970-01-01
      • 2015-11-24
      • 1970-01-01
      • 2014-04-09
      相关资源
      最近更新 更多