使用数据库的工作流在生产中创建alter和drop命令以及Web应用程序

时间:2015-03-01 10:21:52

标签: php mysql migration

在我的工作中,所有生产环境都具有有限的mysql权限。为了安全起见,所有Web应用程序都无法执行mysql Create,Alter或Drop查询。

这使我们面临挑战。我们有一个SaaS软件模型。所以我们的应用程序和数据库每周都在增长。像doctrine migrations,phinx这样的工具将帮助我们在整个过程中完成数据库迁移。当我们部署(我们使用ansible)时,我们必须要求我们的ops团队为所有mysql帐户提供所有权限。之后我们部署然后撤销权限。我想摆脱这种依赖。

我们有一个特殊的服务器,我们可以执行我们想要执行的所有查询,但是我们没有运行任何应用程序。因此,没有要执行的学说迁移或phinx文件。我们可以在那里部署我们的软件,但我们只会这样做以进行数据库迁移,因为phinx没有导出功能。

现在我将回答我的问题。其他公司如何做到这一点?我们有正常的工作流程吗?我们可以改进我们的工作流程,如果是,那么如何?

我真的可以在这个主题上使用一些新的想法。

2 个答案:

答案 0 :(得分:0)

我理解您的问题,但我认为在部署更新时,您可以轻松地在部署脚本中添加一些内容,这将为所有mysql帐户提供所有权限,然后撤消它们。如果您关注的是安全问题,那么在部署过程结束后,您只需删除包含root密码的脚本即可。

答案 1 :(得分:0)

创建存储过程。通过root安装它们,让它们使用' SECURITY DEFINER'。在SP内部执行验证,以便这些例程仅执行它们应该执行的操作,并且仅在它们应该执行时执行。然后以webserver EXECUTE特权提供API,以便他们可以执行SP。