我正在设置 Gitlab CI/CD,以测试和部署使用微服务的项目。该服务在 Laravel 中构建,每个服务都在自己的 Dockers 容器中运行。每个微服务都有一个专用的数据库 (MySQL) 用户。用户仅被授予对应用程序数据库中各自表和字段的权限。
为了处理数据库迁移,我们使用了单独的 Docker 容器/Laravel 实例。此实例具有单独的管理员用户,该用户对应用程序数据库具有权限,但没有对 mysql 数据库的权限(因此它无法创建用户)。
现在部署越来越近了,我开始研究 Gitlab CI/CD,到目前为止,我只在构建测试镜像。在 MySQL 中获取正确的用户很有挑战性(但我做到了)。但我对如何在生产中管理用户感到困惑...
我是否应该给予处理迁移的容器对相关 mysql 数据库表的权限,并使用原始 SQL 编写迁移数据库::语句()插入(或删除)用户并设置适当的权限?这里有 Laravel 方法吗?一种让你管理 RDBMS 用户的方法?或者我应该手动添加用户(感觉要放弃了)>
对于本地开发/测试环境,有一个单独的副本,用于存储启动它所需的所有文件。要为所有微服务创建数据库用户,请创建一个包含以下内容的目录:.sql文件安装在/docker-entrypoint-initdb.dMySQL docker 容器的目录。MySQL 会自动加载此目录,并用它来创建所有用户并授予他们权限。
答案1
不建议使用迁移或简单的 SQL 查询来处理生产数据库的用户和权限。
相反,您可以使用配置管理工具(如 Ansible、Chef 或 Puppet)或数据库管理工具(如 MySQL Workbench 或 phpMyAdmin)在应用程序代码之外管理它们。
也可以手动添加用户,但需要考虑安全性和权限限制。要在本地开发/测试环境中创建数据库用户并授予其权限,可以在MySQL docker 容器的目录.sql
中挂载一个包含文件的目录。/docker-entrypoint-initdb.d