通常,如果我使用某些API(例如,在Linux上的Python中)连接到MySQL,我必须提供密码作为connect()
函数的参数。但是,我不想将密码存储在代码中,甚至存储在项目存储库中的任何位置,因为我要分享密码。我也不想将其作为命令行参数传递,因为首先,它会在流程管理器中显示,其次,我不想每次都输入它启动脚本。我也不想为每个小脚本提供特定于程序的配置文件。
我想出了以下解决方案:解析本地~/my.cnf
文件(在Python中,例如使用configparser
)并从那里获取默认设置。但是,我必须自己进行解析并使用不方便的"组后缀"如果我想与多个主机合作。
所以我的问题是:是否有一种标准方法可以安全地存储一对(主机,用户)的默认密码,各种脚本/程序可以使用哪种?
编辑:我找到了duplicate,但我对此答案不满意,因为它仍然在代码中存储密码。
答案 0 :(得分:0)
除非您创建没有密码的用户,否则我认为您可以在没有密码的情况下连接到数据库。 github或任何其他存储库系统上的项目都有一个非常常见且安全的东西,它包含存储库中的dist文件和要忽略的实际配置文件。像这样:
config/
- settings.dist.py
- settings.py
,您的系统将加载settings.py
,您将获得数据库凭据或应用程序特定设置。此文件不在存储库中,因为它将被忽略。
在存储库中,您只有settings.dist.py
具有本地开发环境的默认凭据,因此任何加入该项目的人都将使用自己的凭据。在现场不应该访问所有人。
git add settings.dist.py
echo "settings.py" >> .gitignore
git commit -m 'yout message'
git push origin branch_name