如何在 ddev 中创建和加载第二个数据库?
How can I create and load a second database in ddev?
我有一个 Drupal 多站点,每个站点需要一个数据库,并希望它在 ddev 中 运行,但默认情况下 ddev 只有一个数据库,名为 'db'。如何获得第二个数据库?
您可以使用 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
有完整教程
有关数据库管理的更多详细信息,请访问 https://ddev.readthedocs.io/en/latest/users/topics/database_management/
除了rfay的回答,上次link中使用的技巧正是我想提出的,也是我目前正在使用的:
将此挂钩添加到 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
我喜欢创建额外 config.multisite.yaml
并在其中添加定义的方法:
additional_hostnames:
- basic
- umami
hooks:
post-start:
- exec: mysql -uroot -proot -e "CREATE DATABASE IF NOT EXISTS basic; GRANT ALL ON basic.* to 'db'@'%';"
service: db
- exec: mysql -uroot -proot -e "CREATE DATABASE IF NOT EXISTS umami; GRANT ALL ON umami.* to 'db'@'%';"
service: db
以上来自ddev-contrib收据https://github.com/drud/ddev-contrib/blob/master/recipes/drupal8-multisite/dot.ddev/config.multisite.yaml
我有一个 Drupal 多站点,每个站点需要一个数据库,并希望它在 ddev 中 运行,但默认情况下 ddev 只有一个数据库,名为 'db'。如何获得第二个数据库?
您可以使用 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 有完整教程
有关数据库管理的更多详细信息,请访问 https://ddev.readthedocs.io/en/latest/users/topics/database_management/
除了rfay的回答,上次link中使用的技巧正是我想提出的,也是我目前正在使用的:
将此挂钩添加到 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
我喜欢创建额外 config.multisite.yaml
并在其中添加定义的方法:
additional_hostnames:
- basic
- umami
hooks:
post-start:
- exec: mysql -uroot -proot -e "CREATE DATABASE IF NOT EXISTS basic; GRANT ALL ON basic.* to 'db'@'%';"
service: db
- exec: mysql -uroot -proot -e "CREATE DATABASE IF NOT EXISTS umami; GRANT ALL ON umami.* to 'db'@'%';"
service: db
以上来自ddev-contrib收据https://github.com/drud/ddev-contrib/blob/master/recipes/drupal8-multisite/dot.ddev/config.multisite.yaml