Postgresqlユーザーロール管理


PGデータベースのログインユーザとロールは相互に関連しており,oracleよりも簡単で柔軟である.PG内のログインユーザとロールの違いは,ログイン可能かどうか,すなわちlogin属性である.
 1.ログインユーザーの作成:
CREATE ROLE test LOGIN PASSWORD 'test'
  NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
create roleはcreate userコマンドと等価ですが、create userのデフォルトはloginであり、前者のデフォルトは非loginです.
2.システム内のユーザーの表示
psql端末はduまたはdu+で表すこともできるし、システムテーブルを表示することもできる:select*from pg_roles;
3.応用
ログインユーザとpg_hba.confファイルの設定については、ホストに何らかの方法でログインするデータベースを設定できます.
スーパーユーザーはこの制限を受けない.ユーザーはALTER ROLE role_のような属性を設定できます.name SET enable_indexscan TO off;
このユーザーがSQLを実行するときにインデックスを実行しないで、リセットすることができます:alter role role_name reset xxx; しばらくこの使い道に気づかなかった.
4.ロールのプロパティ
 login,superuser,createdb,createrole,replication,passwod,inherit.
createrole権限は、他の一般的なユーザーロールの作成または削除を許可します(スーパーユーザーを除く).
Replication権限は、ストリームレプリケーションを行う際に使用されるユーザー属性であり、一般的には個別に設定されます.
passwdは、md 5やpasswdモードなど、ログイン時にパスワードを指定する必要がある場合に役立ちます.クライアントの接続認証方式に関連しています.
Inheritは、ユーザー・グループのメンバーに対する継承フラグであり、メンバーはユーザー・グループの権限特性を継承できます.
5.ユーザーグループ
多くのユーザーが使用する場合、一人一人に権限を与える必要があるのは面倒なことです.ユーザーグループは、多くのユーザーをグループに引き込み、このユーザーグループに権限を与えて、すべてのユーザーが権限を必要とする役割を果たします.
グループユーザーを作成します.一般的にはログインさせません.
create role group_name;
グループユーザーを追加するには、次の手順に従います.
grant group_name to role1;
grant group_name to role2;
グループ・ユーザーの削除
revoke group_name from role1;
revoke group_name from role2;
より複雑に、ユーザグループのグループを設定することができる.デッドサイクルのユーザグループについては、aがbに属し、aが含まれるなど、許されない.