python - 在 Python 中连接到 MySQL : the safe way?

标签 python mysql

通常,如果我使用某些 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/

相关文章:

python - Cherrypy 中的静态 html 文件

python - 如何在 python 中延迟调用函数?

php - 检索按成员分组的每日竞赛条目

mysql - 如何按类别分组,但根据最低内容对类别进行排序?

mysql 为column1 或column2 插入唯一值?

python - api查询的pandas df

python - 使用 SSL 创建一个非常简单的 IRC 机器人?

python - 应用锐化滤镜后重写图像

php - MySQL 中可以使用 Subtable 吗?

php - Laravel,页面刷新后显示数据库记录更新