У меня есть мультисайт Drupal, которому нужно иметь одну базу данных для каждого сайта, и я хочу, чтобы он работал в ddev, но ddev по умолчанию имеет только одну базу данных с именем «db». Как я могу получить вторую базу данных?
Как я могу создать и загрузить вторую базу данных в ddev?
Ответы (2)
Обновлено 2 июня 2020 г.: в последних версиях ddev вы можете импортировать дополнительные базы данных напрямую с помощью ddev import-db --target-db=newdb
. Созданная база данных уже будет иметь разрешения и т. д.
Остальная часть ответа была отредактирована, чтобы обновить его...
Вы также можете вручную создавать базы данных и управлять ими (хотя теперь это редко требуется). Пароль root для сервера БД — «root», так что вы можете mysql -uroot -proot
войти туда (или использовать ddev mysql -uroot -proot
).
ddev mysql -uroot -proot
CREATE DATABASE newdb;
GRANT ALL ON newdb.* to 'db'@'%' IDENTIFIED BY 'db';
- Теперь, если вы хотите загрузиться из дампа БД,
ddev import-db --target-db=newdb --src=dumpfile.sql
- Ваш обычный веб-пользователь теперь может получить доступ к этой альтернативной базе данных, и ее можно использовать в settings.php для вашего альтернативного мультисайта.
- Есть много других вещей, которые вы захотите сделать для мультисайта Drupal; полное руководство доступно по адресу https://github.com/drud/ddev-contrib/tree/master/recipes/drupal8-multisite
В дополнение к ответу rfay, трюк, использованный в последней ссылке, был именно тем, что я хотел предложить и что я сейчас использую:
Добавьте этот хук в файл config.yml
hooks:
post-start:
- exec: mysql -uroot -proot -hdb -e "CREATE DATABASE IF NOT EXISTS second_db; GRANT
ALL ON second_db.* TO 'db'@'%';"
И загрузите данные во вторую базу данных с помощью параметра --target-db
:
ddev import-db --target-db=second-db --src=second-db.sql
ddev import-db --target-db=second_db
Но вы можете сделать import-db в качестве постстартового хука. Сценарий import-if-empty в ddev-contrib также был бы хорош здесь, github.com/drud/ddev-contrib/tree/master/hook-examples/
- person rfay; 02.06.2020