【问题标题】:Adding mysql database credentials to environment variable results in operational error将 mysql 数据库凭据添加到环境变量会导致操作错误
【发布时间】:2021-03-14 02:54:23
【问题描述】:

我正在使用 Heroku 部署一个 Django Web 应用程序。我有一个 MySql 数据库。

当我的 settings.py 文件包含 MySQL 数据库的硬编码密码和用户名时,一切正常。

我决定将我的用户名和密码存储在环境变量中,并重写了 settings.py 文件,如下所示。

DB_USER = os.environ.get('DB_USER')
DB_PASS = os.environ.get('DB_PASSWORD')

DATABASES = {
    'default': {
        #'ENGINE': 'django.db.backends.sqlite3',
        #'NAME': BASE_DIR / 'db.sqlite3',
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'pahlisch',
        'USER': DB_USER,
        'PASSWORD': DB_PASS,
        'HOST': '123.mysql.database.azure.com',
        'PORT': '3306',
        'OPTIONS': {'sql_mode': 'STRICT_ALL_TABLES'}
    }
}

接下来,我将本地环境变量添加到 Heroku。

当我尝试加载网站时,我收到以下消息。

(1045, "访问被拒绝用户 ''mattrw2'@'44.167.157.221' (使用密码: NO)")

我不明白出了什么问题。

【问题讨论】:

  • :DB_PASS 之间的空格字符可能被假定为值的一部分。试试'PASSWORD':DB_PASS,,不带空格。另一方面,服务器声称您不使用密码((using password: NO))......这很奇怪。

标签: mysql django heroku


【解决方案1】:

MySQL documentation 表明这种错误意味着,与您所说的相反,您没有提供密码。

我建议您测试您的环境变量是否实际存储和访问。尝试从manage.py 登录shell,看看是否可以访问您的环境变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-18
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    • 2020-10-10
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多