You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级至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用户能正常登录:

  1. 在项目的.ddev文件夹下新建docker-compose.db.yaml文件,写入以下内容:
    version: '3.6'
    services:
      db:
        command: ["--default-authentication-plugin=mysql_native_password"]
    
  2. 重启ddev服务让配置生效:
    ddev restart
    
  3. 再重新执行你原来的导入命令:
    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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:53:43