gpt4 book ai didi

database - Postgresql Docker 角色不存在

转载 作者:IT老高 更新时间:2023-10-28 12:47:03 26 4
gpt4 key购买 nike

我为 postgres 下载了 docker 容器:https://hub.docker.com/r/library/postgres/ ,并执行了以下操作:

$ docker run --name satgres -e POSTGRES_PASSWORD=mysecretpassword -d -p 5432:5432 postgres
satgres | "docker-entrypoint.s…" | 5 seconds ago | Up 6 seconds | 0.0.0.0:5432->5432/tcp | satgres
$ docker exec -it c8f1b22cc41e /bin/bash
# psql -U postgres
psql (10.1)
postgres=# CREATE DATABASE mytest;
postgres=# \password postgres
postgres=# CREATE ROLE ming WITH LOGIN PASSWORD 'pass1234';
postgres=# ALTER ROLE ming CREATEDB;
postgres=# CREATE DATABASE sjk;
postgres=# GRANT ALL PRIVILEGES ON DATABASE youtube TO ming;
postgres=# \connect sjk
youtube=# ALTER ROLE ming lOGIN;

我的计划是在 docker 上使用这个数据库和 Django,所以首先要检查我可以连接,但我不能。

$ psql -h localhost -p 5432 -U postgres
$ psql: FATAL: role "postgres" does not exist
$ psql -h localhost -p 5432 -U ming
$ psql: FATAL: role "ming" does not exist

我对 PSequal.app 做同样的事情,说同样的话,我在 Mac High Sierra 上运行。

为什么会出现此错误?这个角色是存在的,或者至少在我看来是这样的......

最佳答案

问题很简单,我的计算机已经在运行一个我不知道仍在运行的 Postgres 实例(不在 Docker 中):5432,检查:

$ lsof -n -i:5432 | grep LISTEN

所以我记得我是通过 https://gist.github.com/sgnl/609557ebacd3378f3b72 安装的,我跑了

$ pg-stop

然后我连接到 Docker 实例就没有问题了。

编辑 (2019/07/02)

这个问题最近通过了 10,000 次浏览,所以我想我应该详细说明一下为什么会发生这种情况。

通常通过docker运行,使用python并连接到postgres数据库需要你安装psycopg2,通过pip3 install psycopg2,但是如果你运行这个命令你会得到:

Error: pg_config executable not found.

这是因为 psycopg2 需要操作系统安装 postgres 库:

yum install postgresql-devel
apt-get install postgresql-client

现在,在 Mac 上,您需要对 brew 执行相同操作:

brew install postgresql

我没有意识到的一件事是,在 Mac 上,执行上述操作不仅会安装所需的库,而且还会:5432 上启动数据库。因为这一切都是在后台完成的,所以我没有想到这是问题所在,因为没有弹出任何常见的错误来通知端口正在被使用等等......

关于database - Postgresql Docker 角色不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48593016/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com