如何从本地主机连接到在docker网络中运行的docker容器
P粉418854048
P粉418854048 2023-07-25 11:54:51
[MySQL讨论组]

我有一个mysql的docker容器使用docker撰写像这样:

version: "3.3"
services:
  db-server:
    container_name: database
    image: mysql:latest
    build:
      dockerfile: ./Dockerfile
    environment:
      MYSQL_ROOT_PASSWORD: rootTest
      MYSQL_USER: soumalya
      MYSQL_PASSWORD: userTest
    ports:
      - "3031:3306"
    networks:
      - internal
    volumes:
      - mysql:/var/lib/mysql
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql:ro
    restart: unless-stopped

networks:
  internal:
  driver: bridge
volumes:
  mysql:

我正在用正确的密码连接到localhost:3031,但它给了我这个错误:

Access denied for user 'root'@'172.19.0.1' (using password: YES)

我该如何修复这个错误?同一内部网络中的其他容器也无法连接到该数据库。

我在这里给出Dockerfile的内容:

ADD init.sql init.sql

我给出了init的内容。sql在这里:

create database if not exists reviews;
create database if not exists users;
create database if not exists vendors;
GRANT ALL PRIVILEGES on reviews.* to 'soumalya'@'%';
GRANT ALL PRIVILEGES on users.* to 'soumalya'@'%';
GRANT ALL PRIVILEGES on vendors.* to 'soumalya'@'%';

从容器日志中,我可以看到数据库正在启动并等待端口3306中的传入连接。

P粉418854048
P粉418854048

全部回复(1)
P粉803527801

正如@HansKillan所说,当数据库已经存在时,我更改了密码,更改的密码被忽略了,它正在使用旧密码。我不得不手动修改我的用户的密码写sql命令使用docker exec <container_name>…使用SQL命令修改用户密码。然后一切都成功了。在您的情况下,如果您的数据库不包含太多数据,那么您可以直接删除卷并重新创建容器以缩短时间

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号