背景
django需要和mysql数据库连接,但是因为代码开源,如果把密码明文直接放在文本里会非常不安全。
经过试验,找到了django储存数据库连接信息的最佳方式。
解决
直接存在当前机器的环境变量里!
以Linux举例
写入shell配置文件里
我用zsh,就在使用用户下的.zshrc里边加入:
export ALIYUN_RDS_1_PASSWORD="password"
export ALIYUN_RDS_1_NAME="database name"
export ALIYUN_RDS_1_USER="user name"
export ALIYUN_RDS_1_HOST="host"
export ALIYUN_RDS_1_PORT="port"
...
然后source .zshrc
django文件里直接引用来自本台机器刚才设置的环境变量:
import os
...
DATABASES = {
"default": {
"ENGINE": "django.db.backends.mysql",
"NAME": os.environ["ALIYUN_RDS_1_NAME"],
"USER": os.environ["ALIYUN_RDS_1_USER"],
"PASSWORD": os.environ["ALIYUN_RDS_1_PASSWORD"],
"HOST": os.environ["ALIYUN_RDS_1_HOST"],
"PORT": os.environ["ALIYUN_RDS_1_PORT"]
}
}
windows和mac同理,也是直接写在环境变量中
思路借鉴:https://levelup.gitconnected.com/how-to-store-passwords-in-django-the-right-way-c572cb4f2eb1