質問するログイン新規登録

回答編集履歴

4

追記

2020/06/17 08:08

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -20,4 +20,6 @@
20
20
  スキーマーに対してまとめて行うなら
21
21
  ```SQL
22
22
  GRANT SELECT ON ALL TABLES IN SCHEMA schema_name To role_name;
23
- ```
23
+ ```
24
+
25
+ 若しくはREVOKEで指定しているスキーマーが不足しているのではないでしょうか。

3

追記

2020/06/17 08:08

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -12,4 +12,12 @@
12
12
  >
13
13
  > **対象がスキーマ**の場合は、スキーマ内での新規オブジェクトの作成を許可します。 既存のオブジェクトの名前を変更するには、オブジェクトを所有し、かつ、そのオブジェクトが入っているスキーマに対してこの権限を保持していなければなりません。
14
14
  >
15
- > **対象がテーブル空間**の場合は、テーブル空間内でのテーブルとインデックス、一時ファイルの作成と、デフォルトのテーブル空間としてこのテーブル空間を持つデータベースの作成を許可します (この権限の取り消しによって既存のデータベースやスキーマの配置が変わることはないことに注意してください)。
15
+ > **対象がテーブル空間**の場合は、テーブル空間内でのテーブルとインデックス、一時ファイルの作成と、デフォルトのテーブル空間としてこのテーブル空間を持つデータベースの作成を許可します (この権限の取り消しによって既存のデータベースやスキーマの配置が変わることはないことに注意してください)。
16
+
17
+  
18
+ >> 逆を言えば、指定したDB内の指定したスキーマ内のテーブルをSELECTだけできればよいです。
19
+
20
+ スキーマーに対してまとめて行うなら
21
+ ```SQL
22
+ GRANT SELECT ON ALL TABLES IN SCHEMA schema_name To role_name;
23
+ ```

2

推敲

2020/06/17 06:45

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  追記
7
7
  --
8
- 設定可能な権限に対して剥奪はできますけど、対象のオブジェクトとしてテーブルという概念はなさそうなので、剥奪は出来ないのではないかと思います。
8
+ 設定可能な権限に対して剥奪はできますけど、CREATE対象のオブジェクトとしてテーブルという概念はなさそうなので、剥奪は出来ないのではないかと思います。
9
9
  [GRANT — アクセス権限を定義する](https://www.postgresql.jp/document/9.5/html/sql-grant.html)
10
10
  > CREATE
11
11
  > **対象がデータベース**の場合は、データベース内での新規スキーマの作成を許可します。

1

追記

2020/06/17 06:37

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,4 +1,15 @@
1
1
  > テーブル生成を禁止する方法はありますでしょうか?
2
2
 
3
3
  スキーマに対しての権限を与えます。
4
- [スキーマの中にテーブルなどのオブジェクトを作成する権限を追加する](https://www.dbonline.jp/postgresql/role/index3.html#section5)
4
+ [スキーマの中にテーブルなどのオブジェクトを作成する権限を追加する](https://www.dbonline.jp/postgresql/role/index3.html#section5)
5
+
6
+ 追記
7
+ --
8
+ 設定可能な権限に対して剥奪はできますけど、対象のオブジェクトとしてテーブルという概念はなさそうなので、剥奪は出来ないのではないかと思います。
9
+ [GRANT — アクセス権限を定義する](https://www.postgresql.jp/document/9.5/html/sql-grant.html)
10
+ > CREATE
11
+ > **対象がデータベース**の場合は、データベース内での新規スキーマの作成を許可します。
12
+ >
13
+ > **対象がスキーマ**の場合は、スキーマ内での新規オブジェクトの作成を許可します。 既存のオブジェクトの名前を変更するには、オブジェクトを所有し、かつ、そのオブジェクトが入っているスキーマに対してこの権限を保持していなければなりません。
14
+ >
15
+ > **対象がテーブル空間**の場合は、テーブル空間内でのテーブルとインデックス、一時ファイルの作成と、デフォルトのテーブル空間としてこのテーブル空間を持つデータベースの作成を許可します (この権限の取り消しによって既存のデータベースやスキーマの配置が変わることはないことに注意してください)。