首页 >数据库 >mysql教程 >为什么Docker中设置了MYSQL_ROOT_PASSWORD后,MySQL Root用户仍出现拒绝访问的情况?

为什么Docker中设置了MYSQL_ROOT_PASSWORD后,MySQL Root用户仍出现拒绝访问的情况?

DDD
DDD原创
2024-12-20 08:20:11402浏览

Why Does

MySQL_ROOT_PASSWORD 已设置,但用户 'root'@'localhost' 的访问被拒绝(使用密码:YES)

在 Docker 化的 MySQL 环境中,设置 MYSQL_ROOT_PASSWORD 环境变量不足以确保对数据库的访问。这是因为,如果 db_data 卷已包含现有安装,则映像将不会初始化新数据库。

故障排除:

  1. 检查是否数据库已在 db_data 卷中​​初始化: 如果您使用预先存在的卷启动容器,则环境变量不会有任何效果,数据库不会被初始化。
  2. 删除 db_data 卷以强制初始化:

    • 运行 docker-compose down - v 删除现有卷。
    • 运行 docker-compose up -d 以使用新卷启动容器并初始化
  3. 如果需要,转换为绑定挂载:

    • 初始化数据库后,您可以通过更改 docker-compose.yml 中的volumes部分将卷转换为绑定挂载to:

      volumes:
         - /host/path/to/db_data:/var/lib/mysql
    • 启动容器前删除绑定挂载位置的内容: rm -rf /host/path/to/db_data/*
  4. 检查其他潜力问题:

    • 确保 MYSQL_ROOT_PASSWORD 变量设置正确。
    • 检查防火墙设置以确保端口 3306 已打开。
    • 验证MySQL 服务正在运行容器。

以上是为什么Docker中设置了MYSQL_ROOT_PASSWORD后,MySQL Root用户仍出现拒绝访问的情况?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn