【问题标题】:Issue connecting to my postgres database instance连接到我的 postgres 数据库实例的问题
【发布时间】:2021-01-12 09:52:29
【问题描述】:

我正在尝试通过 Docker 连接到我的 postgres 数据库。我已经确认它正在运行(端口 5432)以及我的名为 Adminer 的数据库管理器工具(端口 8080)。到目前为止一切顺利!

接下来,我尝试进行数据库迁移。 (这里是Makefile)通过运行以下命令:

仅供参考,migrate 是 Golang 的数据库迁移工具

migrate -source file://migrations -database postgres://postgres:secret@localhost:5432/syndicate?sslmode=disable up

我的数据库 URL 签出: dbdriver://username:password@host:port/dbname?param1=true&param2=false

但收到此错误:

error: pq: role "postgres" does not exist

这是我所知道的:

为什么默认的 postgres 用户需要角色?

我创建了这个issue,并在收到来自各种平台的反馈时一直在叙述它。这是我完整的repo

最后一件事......

我能找到的唯一与我的问题相似的是这个文档,PostgreSQL 1.3. Creating a Database 声明:

另一个回应可能是这样的:

createdb: could not connect to database postgres: FATAL: role "joe" does not exist

提及您自己的登录名的地方。如果管理员没有为您创建 PostgreSQL 用户帐户,就会发生这种情况。 (PostgreSQL 用户帐户不同于操作系统用户帐户。)如果您是管理员,请参阅第 18 章以获取创建帐户的帮助。您需要成为安装 PostgreSQL 的操作系统用户(通常是 postgres)才能创建第一个用户帐户

就是这样,谢谢!

编辑: 按照建议,我向database.env 添加了一个 POSTGRES_USER:

POSTGRES_PASSWORD=secret
POSTGRES_DB=syndicate
POSTGRES_USER=user

database.env 在docker-compose.yml中被引用:

version: '3.1'
services:
  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080
  db:
    image: "postgres"
    env_file:
      - database.env # configure postgres
    ports:
      - 5432:5432

现在收到错误: error: pq: role "user" does not exist

【问题讨论】:

  • "go" 和 "golang-migrate" 是不相关的标签。
  • 我删除了标签,谢谢
  • 你能用psql连接吗?试试psql -h localhost -U user -d syndicate
  • 收到同样的错误,好像数据库不存在一样。我可以确认我正在运行本地映像
  • 请粘贴以下输出:a) docker-compose ps b) docker ps c) ps -ef | grep postgres d) docker inspect <container id>

标签: postgresql docker docker-compose


【解决方案1】:

在 PostgreSQL 中,用户是一种角色。如果角色“postgres”不存在,则表示您在数据库中没有“postgres”用户。

查看 Docker 容器设置。官方版本要求您提供默认用户的名称。检查哪个用户将其作为默认设置。

【讨论】:

  • "此可选环境变量与 POSTGRES_PASSWORD 结合使用来设置用户及其密码。此变量将创建具有超级用户权限的指定用户和同名数据库。如果未指定,则将使用 postgres 的默认用户。” - hub.docker.com/_/postgres
  • 我查看的文档是否正确?
  • @ConnorCantrell 是的,就是这样
  • 是的,我尝试定义一个用户。我仍然有同样的错误
  • @ConnorCantrell 你定义了什么用户?请在您的问题中附上 docker-compose.yml 内容。
猜你喜欢
  • 2021-11-01
  • 2020-12-13
  • 2015-06-14
  • 1970-01-01
  • 1970-01-01
  • 2012-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多