1

我有带有 PostgreSQL 的 Django 应用程序。

该应用程序具有这些环境变量:

DATABASE_HOST=localhost
DATABASE_USER=admin
DATABASE_PASSWORD=admin

这是 psql 输出:

postgres=# CREATE USER admin WITH PASSWORD 'admin123';
ERROR:  role "admin" already exists


postgres=# select * from USER;
 current_user
--------------
 postgres
(1 row)

postgres=# GRANT ALL privileges ON DATABASE my_db to admin;                 
GRANT

当我尝试从 db 中获取一些东西时,我得到了 ProgrammingError: permission denied for relation app_rangeslot.

所以,问题:

1)如果用户管理员拥有所有权限,为什么我会收到权限被拒绝错误?

2) 如果创建了用户 admin,为什么我看不到它?

4

2 回答 2

1

我认为您在 DATABASES 字典中缺少“默认”键。您的设置应如下所示:

DATABASES = {
  'default': {
      'ENGINE': 'django.db.backends.postgresql_psycopg2',
      'NAME': os.getenv('DATABASE_NAME', 'my_dev'),
      'USER': os.getenv('DATABASE_USER', 'postgres'),
      'PASSWORD': os.getenv('DATABASE_PASSWORD', ''),
      'HOST': os.getenv('DATABASE_HOST', ''),
      'PORT': '5432',
  }
}
于 2017-11-23T17:19:57.563 回答
0

我认为您以 postgres 用户的身份连接

      'USER': os.getenv('DATABASE_USER', 'postgres'),

您不想以管理员身份实际连接吗?

      'USER': os.getenv('DATABASE_USER', 'admin'),
于 2017-11-24T02:12:34.010 回答