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

Docker容器中MySQL导入多Schema后Django迁移遇1044权限错误

解决Django迁移时MySQL权限错误(1044, "Access denied...")

这个错误的核心原因很明确:你创建了pranay用户和core等数据库,但没有给pranay用户授予访问这些数据库的权限,而且MySQL的初始化脚本只会在容器首次创建(数据目录为空)时执行,所以即使后来补加授权,旧的容器数据也不会自动更新。

下面是具体的修复步骤:

1. 更新初始化SQL文件,添加权限授予

修改你的core.sql文件,在创建数据库的语句后添加权限授予命令:

CREATE DATABASE `core` ;
CREATE DATABASE `murad` ;
CREATE DATABASE `mysqltest` ;

-- 给pranay用户授予三个数据库的全部操作权限
GRANT ALL PRIVILEGES ON core.* TO 'pranay'@'%';
GRANT ALL PRIVILEGES ON murad.* TO 'pranay'@'%';
GRANT ALL PRIVILEGES ON mysqltest.* TO 'pranay'@'%';

-- 刷新权限使设置立即生效
FLUSH PRIVILEGES;

2. 清理旧的MySQL数据卷(关键步骤)

因为你之前已经启动过容器,./mysql目录里已经保存了MySQL的旧数据,初始化脚本不会再次执行。所以需要先清理这些旧数据:

# 停止并移除所有运行中的容器
docker-compose down

# 删除本地存储的MySQL数据目录
rm -rf ./mysql

3. 重新构建并启动服务

# 重新构建镜像并启动容器
docker-compose up --build

4. 再次执行迁移

等容器完全启动后,进入web容器执行迁移命令:

docker-compose exec web bash
python manage.py migrate

这样pranay用户就拥有了访问core数据库的完整权限,迁移操作应该就能正常完成了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:47:43