我正在尝试从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
这似乎不起作用。
使用mysql -uroot -h db
并创建新数据库即可。
使用--debug选项运行drush显示用户数据库无法访问数据库:
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:
grant all on *.* to 'db'@'%';
,如果我现在连续两次运行相同的drush命令,它将起作用并安装该站点。
我没有在不同的堆栈上尝试过,所以也许这是在drush网站安装中的错误。 我在ddev上对drupal 8也做了同样的事情,即使它产生不同的错误,它也表现出相似的行为。同样的解决方法,运行两次命令可修复站点安装。