sql >> データベース >  >> RDS >> PostgreSQL

ビューに対するすべての特権を任意のユーザーに付与する方法

    その理由は、ビューまたはテーブルにアクセスするには追加の特権が必要なためです。データベースの特権は、データベース内のすべてのオブジェクトへのアクセスをカバーしているわけではありません。

    関数によって異なります:EXECUTE publicに特権が付与されます デフォルトでは。 しかし 関数は、現在のユーザーの特権で実行されます。 SECURITY DEFINERに興味があるかもしれません CREATE FUNCTIONの修飾子 。ただし、通常はSELECTを付与するだけで十分です。 関係するテーブルで。

    デフォルトの特権に関するドキュメントごと:

    オブジェクトのタイプによっては、初期のデフォルトの権限に、PUBLICにいくつかの権限を付与することが含まれる場合があります 。デフォルトでは、テーブル、列、スキーマ、およびテーブルスペースのパブリックアクセスはありません。 CONNECT 特権とTEMP データベースのテーブル作成特権。 EXECUTE 機能の特権;およびUSAGE 言語の特権。

    このDDLコマンドに興味があるかもしれません(Postgres 9.0が必要です 以降):

    GRANT SELECT ON ALL TABLES IN SCHEMA public TO myuser;
    

    もちろん、問題のデータベースに接続している間(以下の@marcelのコメントを参照)、十分な権限を持つユーザーとして。 DEFAULT PRIVILEGESの設定にも興味があるかもしれません :

    • データベース内の特定のスキーマのすべてをPostgreSQLのグループロールに付与します

    特権を管理する方法の詳細な回答:

    • データベースとスキーマのユーザーのデフォルトの特権を管理するにはどうすればよいですか?

    pgAdminには、より高度な一括操作のための機能があります:

    または、システムカタログをクエリして、一括付与/取り消し用のDDLステートメントを作成することもできます...




    1. ニーズに合わせたSQLServer監視ツールの選択

    2. MAKEDATE()の例– MySQL

    3. Office365とOffice2016の違いは何ですか?

    4. オフラインファーストのネイティブAndroidアプリを開発する方法