升级至ddev v0.19.0后执行ddev import-db遇root访问拒绝错误
解决ddev v0.19.0导入数据库时的权限错误
我帮你搞定这个ddev升级后的数据库导入权限问题~你遇到的ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)错误,本质是ddev v0.19.0调整了MySQL容器的默认认证规则,导致原来用root用户执行的导入命令权限验证失败。下面是几个实用的解决办法:
方案1:用ddev默认的db用户完成导入(最推荐)
ddev本身就提供了拥有完整数据库权限的db用户(密码也是db),完全可以替代root来操作,步骤很简单:
- 先进入db容器:
ddev ssh -s db - 在容器内直接导入压缩的SQL文件(ddev会自动把项目根目录的
.tarballs挂载到容器的/db目录):zcat /db/d7git.sql.gz | mysql -u db -pdb db - 执行完后输入
exit退出容器就搞定了。
方案2:调整MySQL认证插件适配root用户
如果你习惯用root用户操作,可以修改ddev的数据库容器配置,让root用户能正常登录:
- 在项目的
.ddev文件夹下新建docker-compose.db.yaml文件,写入以下内容:version: '3.6' services: db: command: ["--default-authentication-plugin=mysql_native_password"] - 重启ddev服务让配置生效:
ddev restart - 再重新执行你原来的导入命令:
ddev import-db --src=.tarballs/d7git.sql.gz
方案3:给import-db命令指定目标用户参数
直接在导入命令里明确指定ddev默认的用户信息,也能绕过权限问题:
ddev import-db --src=.tarballs/d7git.sql.gz --target-db=db --target-user=db --target-pass=db
小补充
ddev v0.19.0开始,MySQL容器默认用caching_sha2_password作为认证插件,而旧的root用户密码不兼容这个插件,才导致了本地登录被拒绝的问题。用方案1的默认db用户是最省心的,因为ddev已经帮我们配置好了适配的权限和认证方式~
内容的提问来源于stack exchange,提问作者rfay
相关产品推荐
相关产品推荐

