Amazon Redshift クラスターのシステムテーブルで他のユーザーが生成したデータを表示できません。テーブルを表示するにはどうしたらいいですか?
簡単な説明
デフォルトでは、Amazon Redshift の通常のユーザーには他のユーザーのデータを表示する許可がありません。Amazon Redshift データベーススーパーユーザーのみが、すべてのデータベースを閲覧する許可を持っています。
解決方法
SYSLOG ACCESS パラメータに UNRESTRICTED アクセス権限を追加すると、通常のユーザーがシステムテーブル内の他のユーザーによって生成されたデータを表示できるようになります。
**注:**SYSLOG ACCESS を使用する通常のユーザーは、スーパーユーザーテーブルを表示できません。スーパーユーザーだけが他のスーパーユーザーテーブルを表示できます。
1. Amazon Redshift データベースにスーパーユーザーとして接続します。
2. 次のような SQL コマンド ALTER USER を実行します。
test=# ALTER USER testuser WITH SYSLOG ACCESS UNRESTRICTED;
ALTER USER
注:ALTER USER に必要な許可は、スーパーユーザー、ALTER USER 権限を持つユーザー、および自分のパスワードを変更したいユーザーです。
これで、通常のユーザーは無制限の SYSLOG アクセスが可能になりました。
3. スーパーユーザーとして Amazon Redshift データベースとの接続を切断します。
4. 無制限アクセスで SYSLOG アクセスを持つ通常のユーザーとして Amazon Redshift データベースに接続します。
5. 次のような SQL コマンドを実行して、一般ユーザーのアクセスをテストします。
test=> select * from stv_inflight;
-[ RECORD 1 ]--------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
userid | 100
slice | 12811
query | 3036
label | default
xid | 35079530
pid | 1073746910
starttime | 2022-09-15 07:09:15.894317
text | select * from my_schema.dw_lu_tiers_test a, my_schema.dw_lu_tiers_test;
suspended | 0
insert_pristine | 0
concurrency_scaling_status | 0
-[ RECORD 2 ]--------------+---------------------------------------------------------------------------------------------------------------------------------------------------
userid | 181
slice | 12811
query | 3038
label | default
xid | 35079531
pid | 1073877909
starttime | 2022-09-15 07:09:17.694285
text | select * from stv_inflight;
suspended | 0
insert_pristine | 0
concurrency_scaling_status | 0
出力例で、通常のユーザーが別のユーザーテーブルを表示できるようになったことに注意してください。