mysql - 开发数据库凭据最佳实践?

标签 mysql database development-environment credentials

处理内部开发数据库凭据的最佳做法是什么?既适用于应用程序又适用于开发人员?

目前,我们为每个开发数据库创建一个单独的用户/密码,并将这些凭据提交到我们的代码存储库中。但我们希望不再将凭据存储在我们的存储库中。问题是我们的开发人员和应用程序都需要访问数据库。

  • 为开发人员提供他们自己的个人帐户以允许他们访问所有开​​发数据库是否是一种好的做法?甚至所有开发和生产数据库?
  • 开发人员应该在他们的开发环境中使用他们自己的个人帐户吗?或者他们应该使用不同的?
  • 如果他们应该使用不同的帐户,每个开发数据库是否应该有一组单独的凭据?还是我们应该创建一个帐户来访问开发人员可以在其所有应用程序中使用的所有开发数据库?
  • 如果我们应该为每个开发数据库使用单独的帐户,那么开发人员在为自己设置新的开发环境时应该如何获得这些凭据?我们发现,尝试手动跟踪这些(例如 wiki)非常容易出错,并且很快就会过时。

如果重要的话,我们使用 MySQL(准确地说是 Percona)。

最佳答案

首先确保开发、暂存和生产环境 100% 独立。因此 MySQL 帐户也应该是分开的。有助于版本升级的顺利进行,更加安全。在 Percona 中,我做了很多恢复案例,其中开发人员仅仅因为生产数据库和开发数据库共享他的帐户而删除了生产数据库。

话虽如此,开发人员应该在开发数据库上有一个读写帐户,在登台数据库上有一个只读帐户,在生产数据库上有一个只读帐户。

为每个开发人员创建帐户,以便他们负责将帐户存储在安全的地方。因此,您无需担心如何以安全的方式存储/共享帐户。

显然,密码不应存储在存储库中。将配置模板保存在源代码树中:

    # cat config.php
    <?php

    $mysql_user="@@MYSQL_USER@";
    $mysql_password="@@MYSQL_PASSWORD@";
    $mysql_host="@@MYSQL_HOST@";
    $mysql_db="@@MYSQL_DB@";

    ?> 

为确保它在升级过程中不被覆盖,请在 .spec 文件中告知

    %files www
    %config(noreplace) %attr(640, root, apache)  %{_sysconfdir}/%{project_name}/config.php

关于mysql - 开发数据库凭据最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21721705/

相关文章:

sql - 在 MySQL/SQLite 数据库中按路径选择页面

php - 插入语句不起作用并且没有错误

mysql - 在两个 mysql 表中搜索多个列?

mysql - 在 MySql 中执行查询时与 only_full_group_by 相关的错误

php - 根据时间间隔统计mysql表字段

c++ - 在源代码树中包含第三方库

linux - 程序员应该使用什么工具从 Windows 机器在 Ubuntu 机器上工作

PHP - mySQL - 表单无法工作

c# - 将拆分视频保存到数据库中并检索它们

cygwin - Windows-7 上的 Linux 开发 C/C++/bash/python