我正在尝试从我的 ddev Web 容器创建一个新的 drupal 7 多站点。虽然 drush si 运行良好,但创建另一个数据库和站点失败。我从主机运行 ddev ssh 然后发出
drush site-install --sites-subdir=mysite --db-url=mysql://db:db@db/mysite --db-su=root --db-su-pw=root
这似乎不起作用。虽然只是以 root 身份输入 mysql-dbmysql -uroot -h db
并创建新的数据库工作。
使用 --debug 选项运行 drush 显示,用户 db 无法访问数据库:
sql-query: DROP DATABASE IF EXISTS test8; CREATE DATABASE test8 /*!40100 DEFAULT CHARACTER SET utf8 */; GRANT ALL PRIVILEGES ON test8.* TO 'db'@'%' IDENTIFIED BY 'db'; FLUSH PRIVILEGES; [4.26 sec, 2.03 MB] [notice]
Executing: mysql --defaults-extra-file=/tmp/drush_lGzF0v --database=information_schema --host=db --silent < /tmp/drush_GTSajV
ERROR 1044 (42000) at line 1: Access denied for user 'db'@'%' to database 'test8'
Failed to create database: ERROR 1044 (42000) at line 1: Access denied for user 'db'@'%' to database 'test8' [4.3 sec, 2.03 MB]
解决方法
添加格兰特,如下面的评论中所述:
grant all on *.* to 'db'@'%';
如果我现在连续两次运行相同的 drush 命令,它可以工作并安装该站点。
我没有在不同的堆栈上尝试过这个,所以可能是 drush site-install 中的一个错误。我也对 ddev 上的 drupal 8 做了同样的事情,它显示出类似的行为,即使它产生不同的错误。相同的解决方法,运行命令两次修复站点安装。