【问题标题】:Cant create postgres user because of permision denied on Docker由于 Docker 上的权限被拒绝,无法创建 postgres 用户
【发布时间】:2021-02-07 16:19:31
【问题描述】:

当我检查卷时,Postgres 拒绝了此权限。

由于此权限问题,未创建我的用户和数据库。我可以通过运行命令docker exec -it <cont_name> bin/bash 来确认这一点并检查postgres 容器并且没有用户。

在我重新格式化我的 mac book 之前没有发生这种情况,所以我不知道发生了什么。我正在运行 Mac OS Catalina 并运行最新的 Docker。

这是我的 yml 文件的 db 服务

db:
    image: postgres:9.6
    environment:
      - DB_USER=sales_store # used by psql to create rails user
      - DB_PASSWORD=localpostgres # used by psql to create rails user
      - POSTGRES_PASSWORD=localpostgressu # used by psql
      - DB_RESTORE_DATABASE=sales_store_development
    deploy:
      placement:
        constraints: [node.role==manager]
    ports:
      - "5432:5432"
    volumes:
      - db-data:/var/lib/postgresql/data # mount data to host
      - ./init/db/0-init-user-db.sh:/docker-entrypoint-initdb.d/0-init-user-db.sh # database init (fork of sales-store's init)

      # restore from .sql.gz file
      - ./backup/db/sales_store_ist.sql.gz:/1-restore-backup.sql.gz # copy backup file to container
      - ./init/db/1-restore-backup.sh:/docker-entrypoint-initdb.d/1-restore-backup.sh # run psql restore; 
    networks:
      - db-network

我做了什么来解决这个问题但没有奏效:

  • 我尝试从这个link 运行这个命令chmod +x docker-entrypoint.sh -- 但没有用

  • 我授予了我的卷文件夹的读写权限 --- 但没有工作


我读到了Initialize PostgreSQL Container with docker-entrypoint-initdb.d script

但是作者通过修改 yml 文件来修复它。我不想这样做,因为我以前从未这样做过,而且它一直在运行,直到我重新格式化我的 Mac。我假设它是我的 Docker,或者它是我的根文件夹,我需要给每个人读写权限?

【问题讨论】:

    标签: postgresql docker


    【解决方案1】:

    解决方案非常简单:您只需授予对 shell 脚本的执行权限。

    这两个.sh 文件只有读取权限,所以我所做的只是运行命令chmod 777 <file_name>。现在每个用户都将具有读写执行权限。但不建议这样做。

    但对我来说,我只需要尝试一下就可以确定,因为我很绝望。我还更改了父文件夹权限,因为我认为它会传播到子文件夹和文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-23
      • 1970-01-01
      • 2020-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-08
      相关资源
      最近更新 更多