当前位置: 首页 > 知识库问答 >
问题:

docker postgres角色不存在

皇甫鸿远
2023-03-14

我正在使用postgres与docker和它有麻烦。我成功地docker-compose-build

当我在命令下面运行时,它工作得很好。psql按预期以my_username用户开始。我可以看到我的数据库,\l,\dt命令工作正常。

docker-compose exec db psql--username=my_username--dbname=my_database

苏波斯特格雷斯

createuser--createdb--密码new_user

在第二种情况下我怎么才能把它弄对呢?出什么问题了?我很困惑

docker-compose.yml

version: "3.9"

services:
  #### other services ####
  db:
    image: postgres:latest
    restart: always
    environment:
      POSTGRES_DB: my_database
      POSTGRES_USER: my_username
      POSTGRES_PASSWORD: my_password
    ports:
      - 5432
    volumes:
      - postgres_data:/var/lib/postgresql/data/


volumes:
  postgres_data:
  

共有1个答案

司徒杜吟
2023-03-14

通过提供postgres_userpostgres_dbpostgres_password环境变量,您已经更改了初始化postgres数据库时使用的默认用户名/database/password。当您在没有-u选项的情况下运行createUser时,它会尝试以当前用户(本例中为postgres)的身份进行连接,该用户不存在于数据库中,因为您使用用户my_username对其进行了初始化。docker-compose exec db psql--username=my_username--dbname=my_database起作用的原因是,您正确地提供了初始化数据库时使用的用户名和数据库名。

如果删除postgres_userpostgres_db环境变量,它将使用默认值postgres/postgres进行初始化。

请注意,由于您正在将一个卷装入该容器中,该容器中现在已经有一个初始化的数据库,因此即使重新启动编写,也不会重新初始化该卷。您需要docker卷RM该卷,以便在启动容器时重新初始化数据库。

 类似资料:
  • 我最近安装了Ubuntu的最新版本,还不习惯。我在连接PostgreSQL和PGADMIN3时遇到了几个问题。 我找不到,在这一点上,我太害怕尝试追随任何其他帖子而使事情变得更糟。 我怎么才能让这件事成功呢?

  • 接口说明 保存角色 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /permissions/api/team/role/v1.0.0/save 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 token string header 是 当前登录用户的TOKEN roleName string formData

  • 接口说明 保存角色 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 如开启https功能,请求地址的协议应改为https,如:https://www.example.com/wish3dearth/api/access/v1.0.0/getLicenseInfo API地址 POST /permissions/api/team/role/v1.0.0/s

  • 请建议我,我的下一步将如何解决这个问题,并使我的示例项目处于运行状态。

  • 我是个新手。 我为Mac安装了Postgres.App。我在玩psql命令时不小心丢失了postgres数据库。我不知道里面是什么。 我目前正在编写一个教程:http://www.rosslaird.com/blog/building-a-project-with-mezzanine/ 而且我被困在 错误消息: 那么我应该采取哪些步骤呢?删除一个与psql相关的所有内容并重新安装所有内容? 谢谢你

  • 我是新来postgres和面临的困难,在连接到数据库后服务器重启。我在一个OS用户测试下创建了一个数据库pgdb。服务器重启后,我通过发出命令重新启动pgsql 启动postgreql-9.6服务:[OK] 如果我只是发出psql,我会被带到psql提示符,但是这里的数据路径与我之前设置的不同。当我尝试以postgres用户的身份连接到pgdb时,我得到错误: psql: FATAL:数据库"pg