相关疑难解决方法(0)

关系 <table> 的权限被拒绝

我在 psql 中运行了以下 SQL:

CREATE USER bspu LOGIN;

CREATE DATABASE bsp OWNER bspu;

GRANT ALL PRIVILEGES ON DATABASE bsp TO bspu;

\c bsp

CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  client_id VARCHAR(20) NOT NULL,
  api_key VARCHAR(100) NOT NULL,
  api_secret VARCHAR(100) NOT NULL,
  auth_token VARCHAR(128) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

当我以 身份登录bspu并尝试查询users表时,出现错误:

permission denied for relation users
Run Code Online (Sandbox Code Playgroud)

我尝试运行:

ALTER DEFAULT PRIVILEGES GRANT ALL ON TABLES TO bspu;
Run Code Online (Sandbox Code Playgroud)

但它没有帮助。我究竟做错了什么?为什么数据库所有者没有权限查询自己的数据库?

编辑:我bspu现在升级为超级用户,所以我可以继续工作。任何进一步的指导表示赞赏。

postgresql permissions

22
推荐指数
1
解决办法
11万
查看次数

PostgeSQL 的代理身份验证

以下似乎可能是一种相当普遍的情况,但我还没有看到任何解决方案。

我有一个 PostgreSQL 数据库,其中包含特定于 的视图,$user以便根据某些特定于数据库的 ACL 逻辑来限制数据。数据库通常通过 JDBC 访问,特别是在 Web 界面的 JSP 中。用户通过 LDAP 密码认证登录网站。

我想要的是利用从 JDBC 连接到数据库的视图。但通常这个中间层连接是使用通用用户创建的,而不是特定于登录网站的人。我相信在 Oracle 中“正确”的方法是Proxy Authentication,但 AFAIAA 没有与 PostgreSQL 等效的方法。那么该怎么做呢?

想到了一些想法:

  • 给所有用户的数据库帐户设置相同的密码,然后使用这个通用密码创建特定于用户的 JDBC 连接(这感觉太不对了……)
  • 将用户的登录密码存储在网站某处,在创建数据库连接时重复使用(再次,这个感觉很错误)

还有其他(希望更好)的建议吗?

postgresql authentication jdbc connections

4
推荐指数
1
解决办法
3716
查看次数

PostgreSQL 用户权限

我有一个 PostgreSQL 9.3 数据库,带有支持 Web 应用程序和 GeoServer 的 PostGIS 扩展。我创建了三个用户。

用于访问参考数据模式中的数据的只读用户。

用于访问和更新保存应用程序状态的架构中的数据的读/写用户。

GeoServer 正在访问的地图数据的读/写/创建用户。

前两个工作正常。第三个我有问题。以用户 GeoServer 身份登录可以创建新表就好了。但随后无法读取它们。我必须专门进入并手动应用权限。这对于应用程序来说是站不住脚的。用户可以创建一个他们无法读取的表对我来说没有多大意义。所以我认为我错过了一个不明显的权限设置。我的谷歌搜索让我得到了大量关于设置只读用户的奇怪说明,但不是为了这个。

postgresql permissions

1
推荐指数
1
解决办法
5475
查看次数