首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker根目录或用户不会登录,只是拒绝访问。使用船坞组合

问Docker根目录或用户不会登录,只是拒绝访问。使用船坞组合
EN

Stack Overflow用户
提问于 2022-05-02 15:44:45
回答 1查看 2.4K关注 0票数 0

使用docker组合,我有一个mysql 5.7数据库容器,设置根密码和用户密码,但它们不起作用,坞-组合:

代码语言:javascript
复制
version: '3.8'
services:
  viprs-proxy:
    platform: linux/amd64
    image: nginx:alpine
    container_name: viprs-proxy
    depends_on:
      - viprs-website
    volumes:
      - ./nginx/proxy.conf:/etc/nginx/nginx.conf
    ports:
      - 80:80
    networks:
      - viprs-net
  viprs-website:
    platform: linux/amd64
    image: nginx
    container_name: viprs-website
    depends_on:
      - php
      - viprs-website-database
    volumes:
      - ./website/nginx/site.conf:/etc/nginx/conf.d/default.conf
      - ./website:/usr/share/nginx/html
      - ./website/logs:/var/log/nginx
      - viprs-uploads:/usr/share/nginx/html/wp-content/uploads
    ports:
      - 80
    links:
      - php
    networks:
      - viprs-net
  php:
    platform: linux/amd64
    #image: php:7-fpm
    image: viprs-php
    container_name: php
    volumes:
      - ./website:/usr/share/nginx/html
    ports:
      - 9000
    networks:
      - viprs-net
  viprs-website-database:
    platform: linux/amd64
    image: mysql:5.7
    container_name: viprs-db
    command: --init-file /usr/share/nginx/website.sql
    volumes:
      - ./website.sql:/usr/share/nginx/website.sql
      - viprs-db:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: testpassword
      MYSLQ_DATABASE: viprs
      MYSQL_USER: viprs
      MYSQL_PASSWORD: testpassword
    networks:
      - viprs-net
networks:
  viprs-net:
volumes:
  viprs-uploads:
  viprs-db:

现在,如果我登录bash:

代码语言:javascript
复制
docker exec -it viprs-db bash

并尝试登录到mysql:

代码语言:javascript
复制
mysql -u root -p

它只是说访问被拒绝,不管我是使用根用户还是viprs用户。

错误1045 (28000):拒绝用户'root'@'localhost‘(使用密码:是)的访问

如果我输出$MYSQL_ROOT_PASSWORD,它会给出:

代码语言:javascript
复制
echo $MYSQL_ROOT_PASSWORD
testpassword

我见过很多人在这个问题上,但没有找到任何可行的解决方案。环境是按照对接中心上的图像文档设置的,所以我很困惑。

事实上,我可以在没有密码的情况下以root身份登录,所以有些地方不对劲。

EN

回答 1

Stack Overflow用户

发布于 2022-05-02 15:55:14

只有当容器启动时没有数据库,并且MySQL必须创建一个数据库时,才会使用环境变量。

如果已经有数据库,则使用该数据库中定义的用户,而不创建新用户。因为您在/var/lib/mysql上有一个卷映射,所以您可能已经有了一个数据库。

要验证这是否是问题所在,可以尝试删除/var/lib/mysql映射。这将导致容器在开始使用环境变量值时创建新数据库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72089140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档