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

如何在Docker部署环境中修改MySQL默认用户名与密码

根本原因

Docker部署的MySQL容器首次启动时,会使用初始配置的用户名、密码完成用户创建与权限写入,并将所有数据库数据持久化到本地卷中。后续你修改配置文件后,已经存在于卷中的MySQL用户信息不会同步更新,就会出现配置和实际存储的账号密码不匹配,触发1045访问拒绝错误。


方案1:无历史数据/可接受重置数据(操作最简单)

如果你的服务还没正式投入使用,没有需要保留的玩家数据,可以直接重置数据库卷解决:

  • 执行命令停止容器并删除关联的数据库卷(会清空所有已有数据库数据,确认无需要保留的内容再操作):
    docker compose down -v
    
  • 仅修改~/.env文件中的以下两个参数即可,不要修改其他配置文件中的对应值,避免多配置冲突:
    • DB_USER=自定义的新用户名
    • DB_PASS=自定义的新密码
      如果需要修改数据库root密码,也可以同步修改DB_ROOT_PASS参数
  • 重新启动构建服务即可:
    docker compose up -d --build
    

方案2:已有数据需保留

如果服务已经在运行,有需要保留的玩家数据,按以下步骤操作:

  • 先停止除MySQL外的其他服务容器,避免操作过程中出现异常写入:
    docker compose stop ac-worldserver ac-authserver ac-db-import
    
  • 进入MySQL容器,使用root账号登录(默认root密码为password,如果之前改过就用你修改过的root密码):
    docker exec -it ac-mysql mysql -u root -p
    
  • 执行SQL语句更新账号密码,需要修改用户名就执行重命名语句,不需要可以跳过:
    -- 仅修改密码用这个,替换占位符为你的实际值
    ALTER USER '旧用户名'@'%' IDENTIFIED BY '新密码';
    -- 需要修改用户名就加这行
    RENAME USER '旧用户名'@'%' TO '新用户名'@'%';
    -- 刷新权限使修改生效
    FLUSH PRIVILEGES;
    
  • 退出MySQL容器后,修改~/.env中的DB_USER、DB_PASS为你设置的新用户名、新密码,不要修改其他配置文件的对应参数
  • 重启所有容器即可:
    docker compose up -d
    

注意事项

AzerothCore的Docker部署逻辑会优先读取.env文件中的配置变量,其他配置文件会默认继承.env的配置值,不要随意修改其他文件里的数据库账号密码参数,避免出现多配置不一致的问题。

内容的提问来源于stack exchange,提问作者MagentaCyan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 21:51:03