【发布时间】:2021-07-29 11:55:34
【问题描述】:
我正在尝试在 MacOS 上实现配置此 project 的 postgres 数据库,因此我安装了 postgres、docker 并尝试在此 docker 文件上运行 docker-compose up -d:
version: "3"
services:
maadb-ps-db:
image: postgres:latest
container_name: maadb-ps-db
ports:
- "5433:5432"
env_file:
- postgres.env
volumes:
- database-data:/usr/local/var/postgres
volumes:
database-data:
这里我的环境文件只有这一行:
POSTGRES_HOST_AUTH_METHOD=trust
然后,我尝试通过python和以下方法连接到数据库:
def get_resources_sql():
conn = None
try:
# read connection parameters
params = config()
# connect to the PostgreSQL server
print('Connecting to the PostgreSQL database...')
conn = psycopg2.connect(**params)
# create a cursor
cur = conn.cursor()
# TODO
# close the communication with the PostgreSQL
cur.close()
except (Exception, psycopg2.DatabaseError) as error:
print("Database ERROR: ", error)
finally:
if conn is not None:
conn.close()
print('Database connection closed.')
参数如下:
[postgresql]
host=localhost
port=5433
database=maadbsql
当我尝试运行代码时,出现以下错误:
args {'host': 'localhost', 'port': '5433', 'database': 'maadbsql'}
Connecting to the PostgreSQL database...
Database ERROR: FATAL: role "username" does not exist
如果我尝试通过psql maadbsql 打开maadbsql 数据库并检查权限,这就是我得到的(我只有两个用户,“用户名”和“postgres”):
我错过了什么吗?
编辑:
这是运行docker-compose up后的日志:link
这是关机后的日志:link
【问题讨论】:
-
我有几个问题。您说您的环境文件仅包含
POSTGRES_HOST_AUTH_METHOD行,但是usernamepostgres 用户来自哪里?maadbsql数据库是如何创建的?似乎缺少一些信息。此外,Python 代码中的连接参数似乎没有指定用户名。 -
@larsks 我手动创建了 maadbsql 数据库,因为我在配置文件中看到它是必需的。关于用户名账号,我想是我安装Postgres的时候创建的,和我的系统账号同名。
标签: python postgresql macos docker containers