通常,如果我使用某些 API(例如,在 Linux 上的 Python 中)连接到 MySQL,我必须提供密码作为 connect()
函数的参数。但是,我不想将密码存储在代码中,甚至不想存储在项目存储库中的任何位置,因为我要共享它。我也不想将它作为命令行参数传递,因为首先,它会在进程管理器中可见,其次,我不想每次启动脚本时都输入它。我也不希望每个小脚本都有一个特定于程序的配置文件。
我想到了以下解决方案:解析本地 ~/my.cnf
文件(在 Python 中,例如使用 configparser
)并从那里获取默认设置。但是,如果我想与多个主机一起工作,我必须自己进行解析并使用不方便的“组后缀”。
所以我的问题是:是否有一种标准方法可以安全地存储各种脚本/程序可以使用的一对(主机、用户)的默认密码?
编辑:我找到了一个 duplicate ,但我对那里的答案不满意,因为它仍在代码中存储密码。
最佳答案
我不认为没有密码就可以连接到数据库,除非你创建一个没有密码的用户。对于 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
关于python - 在 Python 中连接到 MySQL : the safe way?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41061354/