PostgreSQL 和 Django 的权限被拒绝错误。授予 PostgreSQL 用户管理员权限

Posted

技术标签:

【中文标题】PostgreSQL 和 Django 的权限被拒绝错误。授予 PostgreSQL 用户管理员权限【英文标题】:Permission denied error with PostgreSQL and Django. Giving rights to PostgreSQL user admin 【发布时间】:2018-05-07 16:54:46 【问题描述】:

我有带有 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) 如果用户 admin 拥有所有权限,为什么会出现权限被拒绝错误?

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

【问题讨论】:

你用的是哪个django版本,可以写DATABASES的值 @MohammadMustaqeem Django 版本为 1.8 DATABASES = 'my_db': 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': os.getenv('DATABASE_NAME', 'my_dev'), 'USER': os.getenv('DATABASE_USER', 'postgres'), 'PASSWORD': os.getenv('DATABASE_PASSWORD', os.getenv('DATABASE_PASSWORD', '')), 'HOST': os.getenv('DATABASE_HOST', os.getenv('DATABASE_HOST', '')), 'PORT': '5432', 【参考方案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',
  

【讨论】:

不,默认被另一个数据库占用。我在一个应用程序中有 2 db。而且默认的数据库工作得很好。【参考方案2】:

我认为你是作为 postgres 用户连接的

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

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

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

【讨论】:

以上是关于PostgreSQL 和 Django 的权限被拒绝错误。授予 PostgreSQL 用户管理员权限的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL的用户,角色跟权限管理怎么解决

github提交用户权限被拒

ORA-123456:TNS:权限被拒 ,安装oracle出现这个错误,怎么解决啊,在线等。。。。。

Postgres连接本地数据库出错-"连线被拒,请检查主机名称和埠号,并确定 postmaster 可以接受 TCP/IP 连线"

用winscp访问Ubuntu互传文件被拒???跪求大神

解决谷歌云 ssh 登录权限被拒的问题 google cloud (publickey,gssapi-keyex,gssapi-with-mic)