【问题标题】:How to Store safely Mysql database credentials in my code如何在我的代码中安全地存储 Mysql 数据库凭据
【发布时间】:2021-11-24 04:57:48
【问题描述】:
try:
    connection = mysql.connector.connect(host='localhost',database='USER',user='root',password='password')
    sql_select_Query = "select * from AuthSys WHERE mac = '%s'"%mac
    cursor = connection.cursor()
    cursor.execute(sql_select_Query)
    row_headers=[x[0] for x in cursor.description]
    records = cursor.fetchall()
except mysql.connector.Error as e:
    return [e]
finally:
    if connection.is_connected():
        connection.close()
        cursor.close()
        print("MySQL connection is closed")

我想将 host='localhost',database='USER',user='root',password='password' 安全地存储在我的 python 项目中。这样每个使用我的脚本的人都不会得到访问我的数据库 注意:我是 stackoverflow 的新手。如果我写错了,请给我正确的建议。在此先感谢。

【问题讨论】:

    标签: python mysql encryption base64


    【解决方案1】:

    您可能应该将凭据放在未随项目部署的单独配置文件中。并将此文件的路径传递给应用程序的主条目,如下所示:

    python main.py --config=/your-path/to/your-config-file.ini
    

    您还需要解析这个 --config 参数,然后读取并解析 your-config-file.ini 文件。

    【讨论】:

    • 他们也可以访问配置文件?对吧?
    • 将其设置为生产。如果有人在本地使用它,他们应该以相同的方式设置它。
    • 如果您采用这种方式,请确保将该配置文件 保留在 github 等任何源代码控制中。
    【解决方案2】:

    如果您没有太多此类设置,一种常见的选择是从系统环境变量中获取它们。

    user= os.environ["myuser"]
    password= os.environ["mypassword"]
    connection = mysql.connector.connect(host='localhost',database='USER',user=user,password=password)
    

    请参阅https://12factor.net/ 因素 3。

    我会在所有应用设置环境名称前加上一些通用名称,例如 bkapp_userbkapp_password

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多