はじめに
この記事では初心者エンジニアがエラーにぶち当たった時にどう回避したかを記載していきます。
また、私自身が調べて実際にどのようにエラーから回避できたのかを記録することにより見返すことができるため、Qiitaを利用していきます。
質問があればぜひコメント欄に記入して下さい。できる範囲でお答えさせていただきます。
動作環境
・Mac OS 12.1
・psql (PostgreSQL) 14.2
・pgAdmin4
参考テキスト
今回はpostgreSQL(略してポスグレ)の内容となっています。OSS-DB silverの試験がありpostgreSQLの内容となっています。
私も8月か9月に受けようと思い、テキストを購入しました。
SQLの内容がしっかり書かれている本なので非常に分かりやすいかったです。少しお高めかもしれませんがおすすめの本です!参考にしてみてください。
|
エラー内容
前回の投稿(【PostgreSQL 】csvファイルの読み込み(前処理大全より))より、csvを読み込んだ後、以下のコードでテーブルデータを確認しようとしたところエラーが出てしまいました。
select * from 前処理.hotel_tb;
ERROR: permission denied for table hotel_tb;
エラー内容を訳すと「テーブルに対する権限を拒否する」です。
ここでterminalに戻りメタコマンドの\duでデータベースユーザの一覧を確認してみます。
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ユーザーでpgAdmin4にアクセスしているためだと考えられます。(間違っていたらすみません💦)
Attributesに記載されているそれぞれの権限の説明は[OSS教科書 OSS-DB Silver Ver2.0対応] に記載されていますので確認してみて下さい。
解決 GRANTコマンドの使用
GRANTコマンドで権限を与えてみいと思います。
GRANT SELECT, INSERT ON 前処理.hotel_tb To postgres;
GRANTコマンドにより今回はSELECTとINSERTのコマンドを使用していいよという権限与えてみました。
他にも与えられる権限としては、UPDDATE |DELETE |TRUNCATE |REFERENCES |TRIGGER を付与することができます。
また、それぞれの権限についても[OSS教科書 OSS-DB Silver Ver2.0対応] をご確認してみて下さい。
最初にコーディングしたテーブルデータの確認をしてみた結果が以下の写真の通り成功していることが分かります。
成功しました!
終わりに
今回で2回目の投稿となりました。私はアホなので初心者なりにわからなかったことはQiitaで発信していきたいと思います。間違っているいたり、質問のある方はぜひご指摘ください!