为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Postgres for Docker 运行 pq 时出现“错误:pq:

使用 Postgres for Docker 运行 pq 时出现“错误:pq:

Go
慕无忌1623718 2023-02-28 21:16:18
我正在使用postgres:14-alpine image在 Docker 上设置本地 Postgres 数据库,并使用golang-migrate在其上运行数据库迁移,当我在运行该migrate工具后收到以下错误消息时:error: pq: role "root" does not exist我正在运行以下命令:$ docker run --name postgres14 -p 5432:5432 -e POSTGRES_USER=root -e POSTGRES_PASSWORD=pass -d postgres:14-alpine $ docker exec -it postgres14 createdb --user=root --owner=root demodb $ migrate -path db/migrations -database postgresql://root:pass@localhost:5432/demodb?sslmode=disable --verbose up也可以在这个 Makefile中查看这些命令,并且可以在这个存储库中找到完整的代码库。以下是来自 Postgres 容器的日志:The files belonging to this database system will be owned by user "postgres". This user must also own the server process. The database cluster will be initialized with locale "en_US.utf8". The default database encoding has accordingly been set to "UTF8". The default text search configuration will be set to "english". Data page checksums are disabled.我应该怎么做才能root正确配置角色?
查看完整描述

2 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

docker image 文档指定环境POSTGRES_USER变量默认为postgres如果未设置,请尝试使用它代替root或删除容器并使用正确的环境变量再次构建它

一旦你进入 psql shell,你就可以创建一个用户

CREATE USER username WITH PASSWORD 'your_password';

然后授予用户对特定数据库的访问权限:

GRANT ALL PRIVILEGES ON DATABASE demodb TO username;

完成后,您可以在 make 文件的连接字符串中使用用户


查看完整回答
反对 回复 2023-02-28
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

原来 Hombrew 在我的操作系统上安装和设置的 Postgres 服务器使用了相同的端口,这与在相同端口号下对容器化数据库发出的请求发生冲突。

这个问题可以通过为容器化数据库使用不同的端口号,或者通过关闭操作系统上的数据库来解决。


查看完整回答
反对 回复 2023-02-28
  • 2 回答
  • 0 关注
  • 187 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信