web-dev-qa-db-ja.com

PostgreSQLの役割とユーザーの比較、権限の付与

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

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

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

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

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

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

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

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

53
Craig Ringer