【postgreSQL】permission denied for table テーブル名

## はじめに
この記事では初心者エンジニアがエラーにぶち当たった時にどう回避したかを記載していきます。
また、私自身が調べて実際にどのようにエラーから回避できたのかを記録することにより見返すことができるため、Qiitaを利用していきます。
質問があればぜひコメント欄に記入して下さい。できる範囲でお答えさせていただきます。

## 動作環境
・Mac OS 12.1
・psql (PostgreSQL) 14.2
・pgAdmin4

## 参考テキスト
今回はpostgreSQL(略してポスグレ)の内容となっています。OSS-DB silverの試験がありpostgreSQLの内容となっています。
私も8月か9月に受けようと思い、テキストを購入しました。
SQLの内容がしっかり書かれている本なので非常に分かりやすいかったです。少しお高めかもしれませんがおすすめの本です！参考にしてみてください。
<table border="0" cellpadding="0" cellspacing="0"><tr><td><div style="border:1px solid #95a5a6;border-radius:.75rem;background-color:#f1e8b2;width:504px;margin:0px;padding:5px;text-align:center;overflow:hidden;"><table><tr><td style="width:240px"><a href="https://hb.afl.rakuten.co.jp/ichiba/2a19cdee.17a97014.2a19cdef.e9e02969/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F16041084%2F&link_type=picttext&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0dGV4dCIsInNpemUiOiIyNDB4MjQwIiwibmFtIjoxLCJuYW1wIjoicmlnaHQiLCJjb20iOjEsImNvbXAiOiJkb3duIiwicHJpY2UiOjEsImJvciI6MSwiY29sIjoxLCJiYnRuIjoxLCJwcm9kIjowLCJhbXAiOmZhbHNlfQ%3D%3D" target="_blank" rel="nofollow sponsored noopener" style="word-wrap:break-word;"  ><img src="https://hbb.afl.rakuten.co.jp/hgb/2a19cdee.17a97014.2a19cdef.e9e02969/?me_id=1213310&item_id=19757879&pc=https%3A%2F%2Fthumbnail.image.rakuten.co.jp%2F%400_mall%2Fbook%2Fcabinet%2F2553%2F9784798162553.jpg%3F_ex%3D240x240&s=240x240&t=picttext" border="0" style="margin:2px" alt="[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]" title="[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]"></a></td><td style="vertical-align:top;width:248px;"><p style="font-size:12px;line-height:1.4em;text-align:left;margin:0px;padding:2px 6px;word-wrap:break-word"><a href="https://hb.afl.rakuten.co.jp/ichiba/2a19cdee.17a97014.2a19cdef.e9e02969/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F16041084%2F&link_type=picttext&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0dGV4dCIsInNpemUiOiIyNDB4MjQwIiwibmFtIjoxLCJuYW1wIjoicmlnaHQiLCJjb20iOjEsImNvbXAiOiJkb3duIiwicHJpY2UiOjEsImJvciI6MSwiY29sIjoxLCJiYnRuIjoxLCJwcm9kIjowLCJhbXAiOmZhbHNlfQ%3D%3D" target="_blank" rel="nofollow sponsored noopener" style="word-wrap:break-word;"  >OSS教科書 OSS-DB Silver Ver2.0対応 （EXAMPRESS...</a><br><span >価格：4378円（税込、送料無料)</span> <span style="color:#BBB">(2022/8/3時点)</span></p><div style="margin:10px;"><a href="https://hb.afl.rakuten.co.jp/ichiba/2a19cdee.17a97014.2a19cdef.e9e02969/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F16041084%2F&link_type=picttext&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0dGV4dCIsInNpemUiOiIyNDB4MjQwIiwibmFtIjoxLCJuYW1wIjoicmlnaHQiLCJjb20iOjEsImNvbXAiOiJkb3duIiwicHJpY2UiOjEsImJvciI6MSwiY29sIjoxLCJiYnRuIjoxLCJwcm9kIjowLCJhbXAiOmZhbHNlfQ%3D%3D" target="_blank" rel="nofollow sponsored noopener" style="word-wrap:break-word;"  ><img src="https://static.affiliate.rakuten.co.jp/makelink/rl.svg" style="float:left;max-height:27px;width:auto;margin-top:0"></a><a href="https://hb.afl.rakuten.co.jp/ichiba/2a19cdee.17a97014.2a19cdef.e9e02969/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F16041084%2F%3Fscid%3Daf_pc_bbtn&link_type=picttext&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0dGV4dCIsInNpemUiOiIyNDB4MjQwIiwibmFtIjoxLCJuYW1wIjoicmlnaHQiLCJjb20iOjEsImNvbXAiOiJkb3duIiwicHJpY2UiOjEsImJvciI6MSwiY29sIjoxLCJiYnRuIjoxLCJwcm9kIjowLCJhbXAiOmZhbHNlfQ==" target="_blank" rel="nofollow sponsored noopener" style="word-wrap:break-word;"  ><div style="float:right;width:41%;height:27px;background-color:#bf0000;color:#fff!important;font-size:12px;font-weight:500;line-height:27px;margin-left:1px;padding: 0 12px;border-radius:16px;cursor:pointer;text-align:center;">楽天で購入</div></a></div></td></tr></table></div><br><p style="color:#0c57de;font-size:12px;line-height:1.4em;margin:5px;word-wrap:break-word"></p></td></tr></table>


## エラー内容
前回の投稿(<a href="https://qiita.com/kenkentaro01/items/1c8d4ee2dbcafba651ba">【PostgreSQL 】csvファイルの読み込み（前処理大全より）</a>)より、csvを読み込んだ後、以下のコードでテーブルデータを確認しようとしたところエラーが出てしまいました。
```ruby:全データの抽出
select * from 前処理.hotel_tb;

ERROR: permission denied for table hotel_tb;
```

エラー内容を訳すと<b>「テーブルに対する権限を拒否する」</b>です。
ここでterminalに戻りメタコマンドの<b>\du</b>でデータベースユーザの一覧を確認してみます。
```ruby:データベースユーザの一覧
postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 kentaro   | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 postgres  | Create DB                                                  | {}

```
ユーザーはrolenameに記載されています。そしてAttributesには、ユーザーに与えられる権限が付与されており、kentaroはスーパーユーザーのため全ての権限が与えられています。しかし一般ユーザーであるpostgresには、Create DBの権限しか与えられていません。恐らく権限の少ないpostgresユーザーでpgAdmin４にアクセスしているためだと考えられます。（間違っていたらすみません💦）
Attributesに記載されているそれぞれの権限の説明は<a href="https://hb.afl.rakuten.co.jp/ichiba/2a19cdee.17a97014.2a19cdef.e9e02969/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F16041084%2F&link_type=text&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJ0ZXh0Iiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MSwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjEsInByb2QiOjAsImFtcCI6ZmFsc2V9" target="_blank" rel="nofollow sponsored noopener" style="word-wrap:break-word;"  >[OSS教科書 OSS-DB Silver Ver2.0対応] </a>に記載されていますので確認してみて下さい。


## 解決　GRANTコマンドの使用
GRANTコマンドで権限を与えてみいと思います。

```ruby:権限の付与
GRANT SELECT, INSERT ON 前処理.hotel_tb To postgres;
```
GRANTコマンドにより今回はSELECTとINSERTのコマンドを使用していいよという権限与えてみました。
他にも与えられる権限としては、<b>UPDDATE |DELETE |TRUNCATE |REFERENCES |TRIGGER </b>を付与することができます。
また、それぞれの権限についても<a href="https://hb.afl.rakuten.co.jp/ichiba/2a19cdee.17a97014.2a19cdef.e9e02969/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F16041084%2F&link_type=text&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJ0ZXh0Iiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MSwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjEsInByb2QiOjAsImFtcCI6ZmFsc2V9" target="_blank" rel="nofollow sponsored noopener" style="word-wrap:break-word;"  >[OSS教科書 OSS-DB Silver Ver2.0対応] </a>をご確認してみて下さい。

最初にコーディングしたテーブルデータの確認をしてみた結果が以下の写真の通り成功していることが分かります。
<img width="250" alt="pgAdmin4" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2669832/55b3d7a5-85cf-6b13-b931-a6ea57417330.png
"></img>

### <font color="Red">成功しました！</font>

## 終わりに
今回で２回目の投稿となりました。私はアホなので初心者なりにわからなかったことはQiitaで発信していきたいと思います。間違っているいたり、質問のある方はぜひご指摘ください！

## 参考文献
・<a href="https://hb.afl.rakuten.co.jp/ichiba/2a19cdee.17a97014.2a19cdef.e9e02969/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F16041084%2F&link_type=text&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJ0ZXh0Iiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MSwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjEsInByb2QiOjAsImFtcCI6ZmFsc2V9" target="_blank" rel="nofollow sponsored noopener" style="word-wrap:break-word;"  ><font color ="blue">[OSS教科書 OSS-DB Silver Ver2.0対応]</font> </a>
・<a href="https://www.javadrive.jp/postgresql/role/index3.html"><font color="blue">ロールにテーブルやビューなどに対する権限を追加する</font></a>