PostgreSQLの役割とユーザー、許可の付与


27

私は現在、新しいプロジェクトを手に入れたため、PostgreSQLとMySQLの違いを学んでいます。また、既存のソフトウェアをMySQLからPostgreSQLに移行するつもりです。私は実際に2つのコマンド(ユーザー/データベース/コマンドプロンプトなど)を比較してHTMLテーブルを作成し始めました。ここで答えを読んだrole、グループとして使用されているように見えることに気付きました。MySQLので、私は二人のユーザ、基本的にパブリック(持ってDELETEINSERTSELECTおよびUPDATEアクセス権)と夫婦追加の権限を持つ管理者ユーザーを。

したがって、基本的にWindows 7コマンドプロンプト(ローカル開発のみ)で...

  • ロールは、ユーザー、グループ、またはPostgreSQL固有の緩やかに使用される用語ですか?
  • データベース内のすべてのテーブルに対して、特定のユーザーに特定の権限のみを付与するにはどうすればよいですか?
  • データベース内のすべてのテーブルに対して、特定のユーザーにすべての権限を付与するにはどうすればよいですか?
  • ユーザー権限を使用する場合、GRANTまたは使用する場合、ロールはユーザーと比較してREVOKEどうですか?

回答:


48

役割は、ユーザおよび/またはグループなどのエンティティその缶関数です。ロールWITH LOGINはユーザーとして使用できます。つまり、ロールでログインできます。ログインすることもできるロールを含め、どのロールもグループとして機能できます。したがって、「ユーザー」と「グループ」は本質的に役割の意図された使用法を示す用語であり、実際の区別はありません。SQLのPostgreSQLフレーバーでも、2つは多かれ少なかれ同義語として使用されます。たとえば、上のドキュメントにCREATE USERは次のように書かれています。

CREATE USERは、CREATE ROLEのエイリアスになりました。

すべてを付与する... のマニュアルを参照してくださいGRANT。実際には、データベース内のすべてのテーブルではALL TABLES IN SCHEMA publicなく、実際に権限を付与する必要があります。

いくつかの権利を与えます...同じことですが、たとえばGRANT ALL使用する代わりにGRANT SELECT, INSERT。再度、マニュアルを参照してください。

ロールとは、ユーザーまたはグループ、あるいはその両方です。ロールはすべて存在するため、ロールにのみ付与できます。


素晴らしい説明!
シャラドフ

だから...スキーマパブリックのすべてのテーブルにすべての権利を付与するための構文は何ですか?
-AlxVallejo

@AlxVallejo これが役立つはずです。トップリンクを試すか、GRANT記載されているドキュメントページを読んでくださいALL TABLES IN SCHEMA
クレイグリンガー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.