如何解决“用户`postgres`被拒绝访问数据库`.public`”;?

问题描述 投票:0回答:2

我使用 prisma 和 node.js。

当我在 docker 容器中调用某些函数(例如 prisma.users.findAll())时,出现错误

User 'postgres' was denied access on the database 'my_db.public'
,但如果我在本地运行,则没有任何问题。

但是,我的容器是成功的,但是当我使用数据库调用任何函数时,我遇到了错误。

My docker file

FROM node:15.13.0

RUN mkdir -p /project/node_modules && chown -R node:node /project

WORKDIR /project

COPY package*.json ./
COPY --chown=node:node prisma ./prisma
COPY config ./config

RUN npm install
RUN npx prisma generate
RUN npx prisma db push --preview-feature

COPY --chown=node:node ./temp ./temp

COPY --chown=node:node . .

CMD [ "node", "index.js" ]

另外,我的数据库

my_db | postgres | UTF8     | C.UTF-8 | C.UTF-8 | 
棱镜设置
DATABASE_URL=postgresql://postgres:[email protected]:5432/my_db?connect_timeout=300&connection_limit=150

node.js postgresql docker prisma
2个回答
0
投票

当我使用不同的主机名时,我使用的是 host.docker.internal,当我将其更改为 localhost 时,它就可以工作了。


-1
投票

如果您在项目中运行这两个 prisma 命令中的任何一个都可以得到相同的错误消息,

npx prisma db pull 
npx prisma generate

这意味着错误来自于错误的

DATABASE_URL
值。

例如:用户应该是

chris
而不是
postgres

// wrong user
DATABASE_URL="postgresql://postgres:passw@localhost:5432/dbname?schema=public"

// correct user
DATABASE_URL="postgresql://chris:passw@localhost:5432/dbname?schema=public"

确保您拥有正确的值。

© www.soinside.com 2019 - 2024. All rights reserved.