Создание нового пользователя рядом с root в docker-compose с проблемами подключения

Я запускаю стек докеров, используя docker-compose. Docker-compose.yml выглядит примерно так, как показано ниже. Проблема в том, что если я добавлю пользователя root по умолчанию, он будет работать нормально, но изменение пользователя на другого пользователя, скажем, tara, вызовет ошибку.

Повторяю: хорошо работает для пользователя root

Примечание. Я запускаю его на 3 узлах с одной репликой. Таким образом, служба может работать на любом из узлов.

"SQLSTATE[HY000] [1130] Host '10.0.10.6' is not allowed to connect to this MySQL server (SQL: select count(*) as aggregate from `users` where `email` = ramesh@gm ▶"

Вот файл docker-compose.yml

версия: '3.3'

сети: smstake:ipam:config:-подсеть:10.0.10.0/24

Сервисы:

db:
    image: mysql:5.7
    networks:
      - smstake
    ports:
      - "3306:3306"
    volumes:
      - db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: smstake
      MYSQL_USER: tara
      MYSQL_PASSWORD: password
    deploy:
      mode: replicated
      replicas: 1

app:

    image: smstake:latest
    ports:
      - 8000:80
    networks:
      - smstake
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager

phpmyadmin:
    image: phpmyadmin/phpmyadmin
    networks:
      - smstake
    environment:
      PMA_HOST: db
      PMA_PORT: 3306
      MYSQL_USER: tara
      MYSQL_PASSWORD: password
    ports:
      - '8082:80'
    deploy:
      mode: replicated
      replicas: 1

тома: db_data:

Все 3 службы работают, только проблемы с подключением.

Люди предлагают запускать команды предоставления, но где и как я могу запустить эти команды?


person Tara Prasad Gurung    schedule 22.02.2018    source источник
comment
Вы должны указать, что это вопрос MySQL в заголовке, тегах и первом абзаце. Кроме того, используйте форматирование кода в файле компоновки, чтобы первые несколько строк не отображались как обычный текст.   -  person BMitch    schedule 28.10.2018


Ответы (1)


Показать запущенный процесс

docker ps

Подключиться к работающему контейнеру mysql

docker exec -it MYSQL-CONTAINER-NAME /bin/bash

Оказавшись внутри контейнера, подключитесь к базе данных и создайте пользователя и что угодно.

person jonhid    schedule 22.02.2018
comment
Я не хочу ставить никаких ручных задач. Как это можно автоматизировать. - person Tara Prasad Gurung; 22.02.2018
comment
перейдите в репозиторий вашего образа докера github.com/docker-library/mysql/ tree/master/5.7 и выяснить это, глядя на github.com/docker-library/mysql/blob/master/5.7/. После этого вы можете отредактировать свой Dockerfile, чтобы создать своего пользователя - person jonhid; 22.02.2018
comment
похоже, что у него уже есть эти параметры file_env 'MYSQL_USER' file_env 'MYSQL_PASSWORD' if [ "$MYSQL_USER" -a "$MYSQL_PASSWORD" ]; then echo "CREATE USER '$MYSQL_USER'@'%' IDENTIFIED BY '$MYSQL_PASSWORD' ;" | "${mysql[@]}" if [ "$MYSQL_DATABASE" ]; then echo "GRANT ALL ON `$MYSQL_DATABASE`.* TO '$MYSQL_USER'@'%' ;" | "${mysql[@]}" fi echo 'FLUSH PRIVILEGES ;' | "${mysql[@]}" fi - person Tara Prasad Gurung; 22.02.2018
comment
Ага.. так что сделайте -эти переменные окружения доступными из вашего docker-compose.yml - person jonhid; 22.02.2018
comment
Попробуйте выполнить docker exec -it MYSQL-CONTAINER-NAME /bin/bash и echo $MYSQL_USER, чтобы увидеть, есть ли он у вас внутри контейнера докеров. - person jonhid; 22.02.2018
comment
да, существуют и имя пользователя, и пароль. но при попытке войти под новым пользователем или даже под пользователем root выдает Access denied for user 'root'@'localhost' (using password: YES) . Пробовал внутри док-контейнера - person Tara Prasad Gurung; 22.02.2018
comment
Попробуйте создать свой .Dockerfile, который извлекается из образа, который вы используете, и в вашем docker-compose.yml удалите запись de image и добавьте запись сборки, указывающую на путь к вашему .Dockerfile. - person jonhid; 22.02.2018
comment
Но я должен подключиться к базе данных и создать пользователя вручную... поскольку ваша БД сопоставлена ​​с томом, вам нужно сделать это только один раз. - person jonhid; 22.02.2018