Docker:无法使用docker-compose参数连接到容器下的mysql

时间:2019-03-23 20:59:46

标签: docker docker-compose

我正在尝试使用在docker-compose.yml文件中定义的mysql参数在容器下运行mysql。但是我运行时拒绝访问: mysql -utest -ptest

我只能与mysql -uroot -proot连接。 请帮帮我。 谢谢。

mysql:
    container_name: mysql
    image: mysql
    restart: always
    volumes:
        - .docker/data/db:/var/lib/mysql
    environment:
        MYSQL_DATABASE: app
        MYSQL_ROOT_PASSWORD: test
        MYSQL_USER: test
        MYSQL_PASSWORD: test

3 个答案:

答案 0 :(得分:0)

我完整的docker-compose文件。

version: '3.2'
services:
    apache:
        container_name: apache
        build: .docker/apache/
        restart: always
        volumes:
            - .:/var/www/html/app/
        ports:
            - 80:80
        depends_on:
            - php
            - mysql
        links:
            - mysql:mysql
    php:
        container_name: php
        build: .docker/php/
        restart: always
        volumes:
            - .:/var/www/html/app/
        working_dir: /var/www/html/app/

    mysql:
        container_name: mysql
        image: mysql
        restart: always
        volumes:
            - .docker/data/db:/var/lib/mysql
        environment:
            MYSQL_DATABASE: app
            MYSQL_ROOT_PASSWORD: test
            MYSQL_USER: test
            MYSQL_PASSWORD: test

答案 1 :(得分:0)

尝试使用指定的数据库名称启动,如下所示:

mysql -u test -p test app

说明:

  

MYSQL_USER,MYSQL_PASSWORD   这些变量是可选的,与创建新用户和设置该用户的密码一起使用。将为该用户授予MYSQL_DATABASE变量指定的数据库的超级用户权限(请参见上文)。这两个变量都是创建用户所必需的。

从MySQL docker hub页面

权限仅授予由环境变量指定的数据库。当您尝试登录默认数据库时,您仅对应用程序数据库没有权限。

答案 2 :(得分:0)

也许您可以按照以下步骤尝试将交互式bash进程附加到已运行的容器:

  • 通过在终端中运行docker container ls获取容器ID或名称(我说的是mysql容器,根据您的docker-compose.yml文件,该容器的名称应为mysql)< / li>
  • 运行docker exec -it mysql bash将交互式bash进程与正在运行的容器相关联
  • 现在,在容器的文件系统中,运行mysql --user=test --password=test,您应该可以继续进行工作