Docker创建MySQL容器后无法连接,登录报1045访问拒绝错误
解决MySQL容器root登录失败问题
问题原因
你的Docker Compose配置里错误设置了MYSQL_USER: root,这个环境变量用于创建新的普通用户,而root是MySQL默认的超级用户,重复设置会干扰root用户的认证配置,直接导致登录失败。
修复步骤
停止并清理现有容器及数据卷
当前数据卷已存储错误的用户配置,必须清理后重新初始化:# 停止容器 docker-compose stop db # 删除容器 docker-compose rm -f db # 删除本地数据卷(注意:会清空所有数据库数据,确认无保留必要再执行) rm -rf .dbdata修正Docker Compose配置
删除错误的MYSQL_USER和MYSQL_PASSWORD配置,仅保留MYSQL_ROOT_PASSWORD即可,修正后的配置如下:db: container_name: admin_db image: mysql:8.0.27 environment: MYSQL_DATABASE: admin MYSQL_ROOT_PASSWORD: 12345 volumes: - .dbdata:/var/lib/mysql ports: - 33066:3306 networks: - app重启容器并登录
# 启动容器 docker-compose up -d db # 等待容器初始化完成(约10秒)后执行登录命令 docker exec -it admin_db mysql -uroot -p输入密码
12345即可正常登录。
额外说明
如果需要创建普通用户,不要使用root作为用户名,示例配置如下:
environment: MYSQL_DATABASE: admin MYSQL_ROOT_PASSWORD: 12345 MYSQL_USER: admin_user MYSQL_PASSWORD: admin_pass
这样会自动创建admin_user普通用户,并赋予其admin数据库的全部权限。
内容的提问来源于stack exchange,提问作者Timur
相关产品推荐
相关产品推荐

