2017-09-17 11 views
1

私は1つの仮想マシンにHTML &のPHPファイルをホストし、別の仮想マシンにPostgresqlデータベースをセットアップすることを任されています。PostgreSQLユーザーから特定の権限を与えたり取り消したりするにはどうしたらいいですか?

私は最近Postgresqlをインストールし、公式のPostgresqlドキュメンテーションを使用してデータベースを作成し、ユーザを作成し、&の失効権利を付与する方法を学んでいます。

mfc_dstという名前のデータベースを作成した後、私は4人の貴様のユーザーを作成するために注文し、私は問題を抱えている場所ですした

-The最初のユーザーが管理者の名前する必要があり、でなければなりません既存ユーザー以外のユーザーのみpostgresには無制限の権利があります。

-The秒(名前CFC)及び(命名)第3のユーザのみmfc_dstデータベースのすべてのテーブルにUPDATE権限を選択しておく必要があります。

- 及び(教授命名)/最後の第四のユーザのみmfc_dstという名前のデータベースからdevoirという名前テーブルを表示することができなければなりません。

CREATEandGRANT.sql 

REVOKE ALL ON ALL TABLES IN SCHEMA public TO cfc; 
REVOKE ALL ON ALL TABLES IN SCHEMA public TO sec; 
REVOKE ALL ON ALL TABLES IN SCHEMA public TO prof; 

GRANT CONNECT ON DATABASE mfc_dst TO admin; 
GRANT CONNECT ON DATABASE mfc_dst TO cfc; 
GRANT CONNECT ON DATABASE mfc_dst TO sec; 
GRANT CONNECT ON DATABASE mfc_dst TO prof; 

GRANT SELECT,UPDATE 
ON ALL TABLES IN SCHEMA public 
TO cfc; 

GRANT SELECT,UPDATE 
ON ALL TABLES IN SCHEMA public 
TO sec; 

GRANT SELECT ON devoir TO prof; 

この他の1:

はこれを実現するために、私は2つの異なるスクリプトを使用これら2つのスクリプトへ

REVOKE.sql 

REVOKE ALL ON TABLE professeur FROM PUBLIC; 
REVOKE ALL ON TABLE reserver FROM PUBLIC; 
REVOKE ALL ON TABLE salle FROM PUBLIC; 
REVOKE ALL ON TABLE semaine FROM PUBLIC; 
REVOKE ALL ON TABLE surveiller FROM PUBLIC; 

おかげで、私は見てから教授という名前のユーザーを防ぐことができました他のテーブルが、私は持っている問題は、ユーザーがCFC、秒、教授という名前のことですが、まだ、すべての3つのテーブルを作成することができるとドロップ彼らにしています。

は、それがこれをやってからそれらを防ぐ方法を知っているし、可能ならば、将来的には、そのような権利/特権を持っていることから、新しく作成したユーザーを防止することは可能ですか?

事前にありがとうござい

答えて

1

すべてのPostgresのユーザーは、暗黙的にも自動的にそれらをpublicスキーマに対するすべての権限を付与public役割のメンバーです。あなたはpublic役割をさらに対処することなく、grant文を発行することができるように、あなたのデータ表の新しいスキーマを定義することを考慮し、さらに

revoke all on database mfc_dst from public; 
revoke all on schema public from public; 

public役割から権限を削除することができます。これを行う場合は、カスタムスキーマを含めるように検索パスを設定し、publicスキーマを除外することもできます。

また、cfcおよびsecユーザーのグループロールを作成し、ユーザーに個別に割り当てるのではなく、そのロールにアクセス許可を割り当てることもできます。これにより、将来のメンテナンスが容易になります。

+0

大変ありがとうございます。 –

関連する問題