如何在Ddev中创建第二个数据库以适配Drupal多站点需求?
在Ddev中创建并加载第二个数据库(含Drupal多站点适配)
没问题,我来一步步教你搞定这个需求——不管是单纯加第二个数据库,还是给Drupal多站点配置独立数据库,操作都很清晰:
通用方法:添加第二个数据库
修改Ddev配置文件
打开项目根目录下的.ddev/config.yaml,添加additional_databases配置块,比如要创建名为second_db的数据库:additional_databases: - name: second_db database: second_db username: db password: db这里的
name是Ddev内部标识,database是实际的数据库名,用户名密码用默认的db就好,这个账号拥有管理所有数据库的权限,不用额外配置权限。重启Ddev使配置生效
在终端运行:ddev restart验证数据库是否创建成功
执行以下命令查看所有数据库:ddev mysql -u db -p db -e "SHOW DATABASES;"输出里能看到
second_db,就说明创建成功了。
针对Drupal多站点的配置
如果是Drupal多站点,需要给每个站点分配独立数据库,按下面的步骤来:
配置所有需要的数据库
还是修改.ddev/config.yaml,给每个站点添加对应的数据库,比如两个站点site1和site2:additional_databases: - name: site1_db database: site1_db username: db password: db - name: site2_db database: site2_db username: db password: db配置完成后重启Ddev:
ddev restart配置每个站点的数据库连接
- 复制
sites/default/settings.php到每个站点的目录下,比如sites/site1/settings.php和sites/site2/settings.php - 分别修改每个站点的
settings.php里的数据库配置:
对于site1:
对于$databases['default']['default'] = [ 'database' => 'site1_db', 'username' => 'db', 'password' => 'db', 'host' => 'db', 'port' => '3306', 'driver' => 'mysql', 'prefix' => '', ];site2,把database值改成site2_db即可。
- 复制
导入现有数据库(可选)
如果要把现有站点的数据库导入到对应库中,用ddev import-db命令指定目标数据库:# 导入site1的数据库备份 ddev import-db --target-db=site1_db --src=./path/to/site1_backup.sql # 导入site2的数据库备份 ddev import-db --target-db=site2_db --src=./path/to/site2_backup.sql
补充小提示
- 所有额外数据库都可以用
ddev mysql -u db -p db second_db直接进入操作,和默认的db库操作方式完全一致。 - 如果需要自定义数据库用户名密码,也可以在
additional_databases里修改,但默认的db账号权限足够,没必要额外折腾。 - 要是Drupal多站点的目录权限出问题,可以用
ddev exec chown -R www-data:www-data sites/你的站点目录来快速修复。
内容的提问来源于stack exchange,提问作者rfay
相关产品推荐
相关产品推荐

