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

使用Docker创建MySQL数据库时用户user1访问权限被拒如何解决

解决MySQL Docker容器用户权限问题

问题分析

错误提示 Access denied for user 'user1'@'%' to database 'my_test_database',但执行的SQL语句是 USE Testtable1,核心问题有两种可能:

  • 应用代码错误指定了数据库名(用了Testtable1而非配置的my_test_database)
  • 本地挂载的./database目录存在旧MySQL数据,导致新用户权限未正确初始化

解决方案

1. 修正应用数据库连接配置

检查你的应用(比如SQLAlchemy)连接字符串,确保数据库名称是my_test_database。示例SQLAlchemy连接URL:

engine = create_engine('mysql+pymysql://user1:user1@localhost:3306/my_test_database')

2. 清理旧数据卷重新初始化

如果确认应用配置正确,可通过清理本地挂载的数据目录重置MySQL:

  • 停止并删除容器:
    docker-compose down
    
  • 删除本地数据目录:
    rm -rf ./database
    
  • 重启容器:
    docker-compose up -d
    
    此操作会重新创建my_test_database及拥有该库完整权限的user1用户。

3. 手动为user1添加权限(保留现有数据)

若无法删除现有数据,可进入容器手动授权:

  • 进入MySQL容器:
    docker-compose exec db mysql -u root -proot
    
  • 执行授权SQL:
    GRANT ALL PRIVILEGES ON my_test_database.* TO 'user1'@'%';
    FLUSH PRIVILEGES;
    
    执行后退出容器,user1即可正常访问my_test_database。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:54:53