PostgreSQL は、スキーマに対するすべての権限をユーザーに付与します

Postgresql Ha Sukimani Duisurusubeteno Quan Xianwoyuzani Fu Yushimasu



データベースは非常に重要であり、特定のデータベース内でユーザーが実行できるさまざまな役割を制御するのは管理者の仕事です。承認の一環として、管理者はデータベース内でユーザー エンティティを定義し、さまざまな権限をロールに付与または取り消すことができます。

こうすることで、データベースにアクセスできるユーザーと、データベースにアクセスできる場合の権限を制御できます。たとえば、データベースの変更を取り消したり、スキーマに対するすべての権限を特定のテーブル内の 1 人または複数のユーザーに付与したりできます。このガイドでは、PostgreSQL を使用して、スキーマに対するすべての権限をユーザーに付与する方法について詳しく説明します。







PostgreSQL でユーザーに権限を付与する方法

新しいロールを作成すると、デフォルトでいくつかの権限が付与されます。ただし、ほとんどの特権では、スキーマのアクセスと制御を規制するために、管理者がそれらをさまざまなユーザーに付与する必要があります。すべての権限を一度に付与することも、個別に付与することもできます。



このチュートリアルでは、新しい 役割 命名された linuxhint1 .



$ 須藤 -iu ポストグル
# ロール linuxhint1 ログイン パスワード 'linuxhint' を作成します。


としてログインしていることに注意してください ポストグル、 PostgreSQL をインストールすると作成されるデフォルトの役割。






ロール (ユーザー) を作成したら、次のコマンドを使用して使用可能なロールを一覧表示できます。

# \ から


利用可能な役割が表形式で表示されます。




ポストグル はデフォルトの役割であり、ほとんどの権限がすでに付与されています。しかし、新しい役割、 linuxhint1、 権限を付与するまで権限はありません。

1. 特定の権限をユーザーに付与する

作成されたロールは、許可しない限りスキーマを変更できません。最初にデフォルトのロールとしてテーブルを作成して、これを確認しましょう。 ポストグル。

# テーブル名を作成する ( 常に生成される m_id int なので ID、fname vachar ( 100 ) null 以外、lname varchar ( 100 ) null 以外、年齢 int ) ;



以下に示すように、使用可能なリレーションを一覧表示できます。


次に、新しいシェルを開き、別のロールを使用して PostgreSQL にログインします。 linuxhint1、 次のコマンドを使用して以前に作成したもの:

$ psql -の linuxhint1 -d ポストグル



-d ロールが Postgres データベースを使用することを指定します。

を使用して作成したテーブルの内容を読み取ってみてください 選択する 指図。

# 選択する * FROM 名;


それは アクセス拒否 ユーザーがテーブルにアクセスできないエラー。


このような場合、次の構文を使用して、特定のテーブルからデータを選択/表示するロール権限を付与する必要があります。

# GRANT 特権名 ON テーブル名 TO 役割名;


権限を付与するには、Postgres セッションを使用します。


許可されたら、前のコマンドを再実行してみてください。


それでおしまい。特定のユーザーに選択権限を付与することができました。

2. スキーマに対するすべての権限をユーザーに付与する

これまでのところ、スキーマに対する権限をユーザーに 1 つだけ付与することができました。まあ、それだけでは十分ではありません。挿入や更新などのすべての権限を付与しない限り、ユーザーはスキーマを変更できません。

これを達成するにはさまざまな方法があります。まず、しましょう 特定のテーブルに対するすべての権限をユーザーに付与する 次の構文を使用します。

# GRANT ALL ON table_name TO role_name;



ユーザーは、特定のテーブルを操作して変更できます。ただし、スキーマ内の他のテーブルを操作することはできません。

特定のスキーマ内のすべてのテーブルに対するすべての権限を付与する 、次の構文を使用します。

# SCHEMA schema_name のすべてのテーブルのすべてを role_name に付与します。



最後に、次のことができます スキーマ上のすべてのテーブルを挿入または選択するなど、特定の権限を特定のロールに付与する .

# SCHEMA schema_name のすべてのテーブルに権限名を付与して、role_name に付与します。



ロールは、指定されたスキーマ内のすべてのテーブルのデータを選択できます。これが、スキーマに対してさまざまなユーザーに付与する権限を定義する方法です。

結論

PostgreSQL は強力な DBMS です。管理者がさまざまな権限をユーザーに付与できるようにするなど、さまざまな機能があります。スキーマに対するすべての権限をユーザーに付与するということは、ユーザーが指定されたスキーマ内のすべてのテーブルを変更および操作できるようにすることを意味します。これを適用する方法と、PostgreSQL の GRANT ステートメントを使用してスキーマに対する権限をロールに付与するその他の方法を見てきました。