我正在使用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 文件的连接字符串中使用用户
慕丝7291255
TA贡献1859条经验 获得超6个赞
原来 Hombrew 在我的操作系统上安装和设置的 Postgres 服务器使用了相同的端口,这与在相同端口号下对容器化数据库发出的请求发生冲突。
这个问题可以通过为容器化数据库使用不同的端口号,或者通过关闭操作系统上的数据库来解决。
- 2 回答
- 0 关注
- 187 浏览
添加回答
举报
0/150
提交
取消