首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker角色创建错误-角色___不存在

Docker角色创建错误-角色___不存在
EN

Stack Overflow用户
提问于 2017-09-26 21:33:27
回答 1查看 1.7K关注 0票数 1

我是新来的码头工人,我正试着和Postgres合作。然后,我尝试运行python测试用例,这些测试用例适用于其他人,而不是我。

下面的错误告诉我,Docker可能很难创建角色foo

(sqlalchemy.exc.OperationalError 2.)致命的:角色"foo“不存在

另一个错误:

操作错误:致命:角色"foo“不存在

Postgresql版本:mydb=# SELECT version();

代码语言:javascript
复制
 PostgreSQL 9.6.5 on x86_64-apple-darwin16.7.0, compiled by Apple LLVM version 8.1.0 (clang-802.0.42), 64-bit
(1 row)

码头版本

代码语言:javascript
复制
Version 17.06.2-ce-mac27 (19124)

使用此脚本运行Docker:

代码语言:javascript
复制
docker run -p 5432:5432 --env POSTGRES_PASSWORD="bar" --env POSTGRES_USER="foo" --env POSTGRES_DB="mydb" postgres

脚本输出:如您所见,它是CREATE ROLE

代码语言:javascript
复制
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.

fixing permissions on existing directory /var/lib/postgresql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

Success. You can now start the database server using:

    pg_ctl -D /var/lib/postgresql/data -l logfile start


WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.
waiting for server to start....LOG:  could not bind IPv6 socket: Cannot assign requested address
HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
LOG:  database system was shut down at 2017-09-26 21:28:17 UTC
LOG:  MultiXact member wraparound protections are now enabled
LOG:  database system is ready to accept connections
LOG:  autovacuum launcher started
 done
server started
CREATE DATABASE

CREATE ROLE


/usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/*

LOG:  received fast shutdown request
LOG:  aborting any active transactions
LOG:  autovacuum launcher shutting down
waiting for server to shut down....LOG:  shutting down
LOG:  database system is shut down
 done
server stopped

PostgreSQL init process complete; ready for start up.

LOG:  database system was shut down at 2017-09-26 21:28:19 UTC
LOG:  MultiXact member wraparound protections are now enabled
LOG:  database system is ready to accept connections
LOG:  autovacuum launcher started

编辑

代码语言:javascript
复制
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS                    NAMES
bbab7eb98fcf        postgres            "docker-entrypoint..."   10 seconds ago      Up 11 seconds              0.0.0.0:5432->5432/tcp   hardcore_wilson
a6a1e2e313b8        postgres            "docker-entrypoint..."   16 minutes ago      Exited (0) 6 minutes ago                            nervous_banach
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-27 01:13:55

看起来像psycopg2尝试本地套接字连接。如果通过TCP连接,您将看到以下异常:

用户"foo“密码身份验证失败

以及容器日志中的一个错误:

代码语言:javascript
复制
FATAL:  password authentication failed for user "foo"
DETAIL:  Role "foo" does not exist.
    Connection matched pg_hba.conf line 95: "host all all all md5"

确保设置了host连接参数。如果没有设置,psycopg2将返回到使用UNIX。

编辑:

看来,当传递psycopg2连接参数时,localhost将更倾向于用于连接的UNIX。如果有两个postgres运行实例,一个侦听UNIX,另一个侦听TCP端口5432,psycopg2将在传递postgresql://localhost:5432之类的url时通过UNIX域套接字进行连接。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46436188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档