【问题标题】:Creating new user beside root in docker-compose having connections issues在 docker-compose 中的 root 旁边创建新用户有连接问题
【发布时间】:2018-02-22 04:24:54
【问题描述】:

我正在使用 docker-compose 运行一个 docker 堆栈。 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'

网络: 短信赌注: ipam: 配置: - 子网: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 项服务都在运行,只是连接出现问题。

人们建议运行授权命令,但我可以在哪里以及如何运行 让这些命令运行?

【问题讨论】:

  • 您应该在标题、标签和第一段中指定这是一个mysql问题。另外,在撰写文件上使用代码格式,这样前几行就不会显示为普通文本。

标签: docker docker-compose docker-swarm docker-swarm-mode docker-stack


【解决方案1】:

显示正在运行的进程

docker ps

连接mysql运行容器

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

进入容器后,连接数据库并创建用户等等。

【讨论】:

  • 我不想放任何手动任务。如何实现自动化。
  • 转到您的 docker 镜像 github.com/docker-library/mysql/tree/master/5.7 的仓库并查看 github.com/docker-library/mysql/blob/master/5.7/… 找出答案。在此之后你可以编辑你的 Dockerfile 来创建你的用户
  • 好像已经有了这个选项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
  • 啊哈 .. 所以让你的 docker-compose.yml 中的这个环境变量可用
  • 尝试执行 docker exec -it MYSQL-CONTAINER-NAME /bin/bash 并 echo $MYSQL_USER 看看是否在 docker 容器中
猜你喜欢
  • 2023-03-16
  • 1970-01-01
  • 2020-12-18
  • 2018-12-31
  • 2019-01-17
  • 2020-08-26
  • 1970-01-01
  • 1970-01-01
  • 2017-03-24
相关资源
最近更新 更多