Redshift表所有者不可见

问题描述 投票:0回答:1

我正在使用超级用户(管理员)创建表,并尝试GRANT ALL并更改表的所有者。

[我在Redshift中运行以下语句,其中(非超级用户)johndevelopers组的成员(并且仅是developers组的成员:]

GRANT ALL ON users.addresses TO GROUP developers;
ALTER TABLE users.addresses OWNER TO john;

我已经确认用户johnusers.addresses具有选择/插入/删除/更新权限,并且是表的所有者。我还确认了用户johnUSAGE架构上具有users

但是,当我以john身份登录时,该表根本没有出现。当我尝试SELECT * FROM users.addresses时,Redshift表示该表不存在。

我在这里想念什么?我没有看到Redshift中额外的权限或安全层吗?我仔细阅读了文档,但到目前为止运气不高。

sql permissions amazon-redshift grant
1个回答
0
投票

因为Redshift表示该表不存在,所以当您以超级用户帐户运行该表时,它表示CREATE TABLE没有提交给数据库。如果您以超级用户帐户的身份断开连接,然后重新连接并尝试对该表运行SELECT语句,是否会遇到相同的错误?

创建表后,尝试运行显式COMMIT语句,然后尝试使用非超级用户帐户对其进行查询。如果您使用的客户端将所有查询执行包装在事务块内,则在您与非超级用户帐户建立连接之前,可能没有提交它们。

也作为参考,我在启用自动提交的情况下运行了以下查询,但无法复制您正在描述的问题:

-- Run as superuser account:
CREATE SCHEMA users;

CREATE TABLE users.addresses (
    user_id VARCHAR(8) ,
    user_address VARCHAR(512)
);

INSERT INTO users.addresses VALUES ('12345678', 'Address 1');

CREATE USER john WITH PASSWORD '********';

CREATE GROUP developers;

GRANT USAGE ON SCHEMA users TO GROUP developers;

ALTER GROUP developers ADD USER john;

GRANT ALL ON users.addresses TO GROUP developers;

ALTER TABLE users.addresses OWNER TO john;

-- Run as non-superuser account 'john':
SELECT *
FROM users.addresses;

-- Result Set:
-- user_id  user_address
-- 12345678 Address 1
© www.soinside.com 2019 - 2024. All rights reserved.