【发布时间】: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))......这很奇怪。