开发人员需要对包括prod在内的所有数据库具有读取权限。有时问题出在Prod上的数据不是他们期望的,并且他们需要查看导致问题的数据,因为他们无法在dev上重现该数据。
开发人员不应具有生产数据写权限或创建对象的权限。没有正式发行的内容将不被推崇。很多时候,人们都会对无法使用的产品进行快速修复,从而导致产品变得更加糟糕或无法工作,但他们却忘记了将代码放入开发/ QA /登台服务器中,甚至将其放入源代码中控制存储库,大约一个月后,下一个正式版本中的代码将被覆盖。
我更喜欢开发人员具有完整的数据库QA权限,因为部署到另一台服务器可以帮助他们查看部署过程中是否存在任何差距(哎呀,我忘记了更改该表的目的,以此类推,哎呀,我忘记了我做了此更改)使用GUI而不是在源代码管理的脚本中使用,这是需要进行任何数据库结构更改的方式)。
当您有一个新的企业类型客户端(将拥有自己的服务器集)时,在启用之前,可能会放宽权限。这是因为发生了如此多的需求,而能够在产品上实现它的少数人被积压,有时甚至需要抽出时间。特别是从另一个系统导入数据的人员,如果数据加载将花费很长时间,则可能会被要求在启动之前将其置于产品上。这些人往往是数据专家,与普通应用程序开发人员相比,允许他们暂时访问产品的舒适度更高。使用已经投入使用的生产服务器时,这并不是奢侈。
将生产权限限制为数据库的最关键的事情之一是,开发人员随后需要确保其工作处于可以被其他人部署的形式。这往往会提高工作质量,因为他们没有尝试动态修复,因为他们忘记了某些东西,或者某些东西没有用,因为他们仅在依赖内存时对产品的处理与对设备的处理不同。当prod部署仅使用整体运行而不是像在devs开发时通常一次使用一个脚本的脚本时,您也会丢失那些“哎呀,我因为意外忘记删除了where子句而意外删除了整个用户表”的类型在产品上运行。对生产数据库具有有限权限的团队也更有可能在源代码管理中存储数据库更改。