データベースは非常に重要であり、特定のデータベース内でユーザーが実行できるさまざまな役割を制御するのは管理者の仕事です。承認の一環として、管理者はデータベース内でユーザー エンティティを定義し、さまざまな権限をロールに付与または取り消すことができます。
こうすることで、データベースにアクセスできるユーザーと、データベースにアクセスできる場合の権限を制御できます。たとえば、データベースの変更を取り消したり、スキーマに対するすべての権限を特定のテーブル内の 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、 次のコマンドを使用して以前に作成したもの:
の -d ロールが Postgres データベースを使用することを指定します。
を使用して作成したテーブルの内容を読み取ってみてください 選択する 指図。
# 選択する * FROM 名;
それは アクセス拒否 ユーザーがテーブルにアクセスできないエラー。
このような場合、次の構文を使用して、特定のテーブルからデータを選択/表示するロール権限を付与する必要があります。
権限を付与するには、Postgres セッションを使用します。
許可されたら、前のコマンドを再実行してみてください。
それでおしまい。特定のユーザーに選択権限を付与することができました。
2. スキーマに対するすべての権限をユーザーに付与する
これまでのところ、スキーマに対する権限をユーザーに 1 つだけ付与することができました。まあ、それだけでは十分ではありません。挿入や更新などのすべての権限を付与しない限り、ユーザーはスキーマを変更できません。
これを達成するにはさまざまな方法があります。まず、しましょう 特定のテーブルに対するすべての権限をユーザーに付与する 次の構文を使用します。
# GRANT ALL ON table_name TO role_name;
ユーザーは、特定のテーブルを操作して変更できます。ただし、スキーマ内の他のテーブルを操作することはできません。
に 特定のスキーマ内のすべてのテーブルに対するすべての権限を付与する 、次の構文を使用します。
# SCHEMA schema_name のすべてのテーブルのすべてを role_name に付与します。
最後に、次のことができます スキーマ上のすべてのテーブルを挿入または選択するなど、特定の権限を特定のロールに付与する .
ロールは、指定されたスキーマ内のすべてのテーブルのデータを選択できます。これが、スキーマに対してさまざまなユーザーに付与する権限を定義する方法です。
結論
PostgreSQL は強力な DBMS です。管理者がさまざまな権限をユーザーに付与できるようにするなど、さまざまな機能があります。スキーマに対するすべての権限をユーザーに付与するということは、ユーザーが指定されたスキーマ内のすべてのテーブルを変更および操作できるようにすることを意味します。これを適用する方法と、PostgreSQL の GRANT ステートメントを使用してスキーマに対する権限をロールに付与するその他の方法を見てきました。