CREATE ROLEは、PolarDBデータベースクラスターに新しいロールを追加します。
説明
CREATE ROLEは、PolarDBデータベースクラスターに新しいロールを追加します。 ロールは、データベースオブジェクトを所有し、データベース特権を持つことができるエンティティです。ロールは、使用方法に応じて「ユーザー」、「グループ」、またはその両方と見なすことができます。 このコマンドを使用するには、CREATEROLE権限、またはデータベーススーパーユーザーである必要があります。
ロールはデータベースクラスタレベルで定義されるため、クラスタ内のすべてのデータベースで有効です。
概要
CREATE ROLE name [ [ WITH] オプション [ ... ] ]
where option can be:
SUPERUSER | NOSUPERUSER
| CREATEDB | NOCREATEDB
| CREATEROLE | NOCREATEROLE
| INHERIT | NOINHERIT
| LOGIN | NOLOGIN
| REPLICATION | NOREPLICATION
| BYPASSRLS | NOBYPASSRLS
| CONNECTION LIMIT connlimit
| [ ENCRYPTED] パスワード 'パスワード' | パスワードNULL
| VALID UNTIL 'timestamp'
| IN ROLE role_name [, ...]
| IN GROUP role_name [, ...]
| ROLE role_name [, ...]
| ADMIN role_name [, ...]
| USER role_name [, ...]
| SYSID uid パラメーター
name: 新しいロールの名前。
SUPERUSER NOSUPERUSER: これらの句は、新しいロールがデータベース内のすべてのアクセス制限をオーバーライドできる「スーパーユーザー」であるかどうかを決定します。 スーパーユーザーのステータスは危険であり、本当に必要なときにのみ使用してください。 新しいスーパーユーザーを作成するには、自分がスーパーユーザーである必要があります。 指定しない場合、デフォルトはNOSUPERUSERです。
CREATEDB NOCREATEDB: これらの句は、データベースを作成するロールの機能を定義します。 CREATEDBが指定されている場合、定義されているロールは新しいデータベースを作成できます。 NOCREATEDBを指定すると、データベースを作成する役割が拒否されます。 指定しない場合、デフォルトはNOCREATEDBです。
CREATEROLE NOCREATEROLE: これらの句は、ロールの作成、変更、削除、コメント、セキュリティラベルの変更、および他のロールのメンバーシップの付与または取り消しを許可するかどうかを決定します。 指定しない場合、デフォルトはNOCREATEROLEです。
INHERIT NOINHERIT: これらの句は、ロールがメンバーであるロールの特権を「継承」するかどうかを決定します。 INHERIT属性を持つロールは、直接または間接的にメンバーであるすべてのロールに付与されているデータベース特権を自動的に使用できます。 INHERITがない場合、別のロールのメンバーシップでは、その別のロールにロールを設定する権限のみが付与されます。 指定しない場合、デフォルトはINHERITです。
LOGIN NOLOGIN: これらの句は、ロールがログインを許可されるかどうか、つまり、クライアント接続中にロールを初期セッション許可名として指定できるかどうかを決定します。 LOGIN属性を有するロールは、ユーザと考えることができる。 この属性のないロールは、データベース特権の管理に役立ちますが、通常の意味でのユーザーではありません。 指定しない場合、NOLOGINがデフォルトになります。ただし、CREATE ROLEがCREATE USERの代替スペルで呼び出される場合を除きます。
REPLICATION NOREPLICATION: これらの句は、ロールがレプリケーションロールであるかどうかを決定します。 レプリケーションモード (物理レプリケーションまたは論理レプリケーション) でサーバーに接続でき、レプリケーションスロットを作成または削除できるようにするには、ロールにこの属性が必要です (またはスーパーユーザーである必要があります) 。 REPLICATION属性を有するロールは非常に特権的なロールであり、複製に実際に使用されるロールに対してのみ使用されるべきである。 指定しない場合、デフォルトはNOREPLICATIONです。 REPLICATION属性を持つ新しいロールを作成するには、スーパーユーザーである必要があります。
BYPASSRLS NOBYPASSRLS: これらの句は、ロールがすべての行レベルセキュリティ (RLS) ポリシーをバイパスするかどうかを決定します。 NOBYPASSRLSがデフォルトです。 BYPASSRLS属性を持つ新しいロールを作成するには、スーパーユーザーである必要があります。
pg_dumpは、テーブルのすべてのコンテンツがダンプされるように、デフォルトでrow_securityをOFFに設定します。 pg_dumpを実行しているユーザーに適切な権限がない場合、エラーが返されます。 ただし、スーパーユーザーとダンプされるテーブルの所有者は常にRLSをバイパスします。
CONNECTION LIMIT connlimit: ロールがログインできる場合、ロールが実行できる同時接続数を指定します。 -1 (デフォルト) は制限なしを意味します。 通常の接続のみがこの制限にカウントされることに注意してください。 準備済みトランザクションもバックグラウンドワーカー接続もこの制限にカウントされません。
[暗号化] パスワード 'パスワード'
PASSWORD NULL: ロールのパスワードを設定します。 (パスワードはLOGIN属性を持つロールにのみ使用されますが、パスワードなしでロールにパスワードを定義できます。) パスワード認証を使用する予定がない場合は、このオプションを省略できます。 パスワードを指定しない場合、パスワードはnullに設定され、そのユーザーのパスワード認証は常に失敗します。 nullパスワードは、オプションでpassword NULLとして明示的に記述できます。
空の文字列を指定すると、パスワードもnullに設定されます。
パスワードは常にシステムカタログに暗号化されて保存されます。 ENCRYPTEDキーワードは有効ではありませんが、下位互換性のために受け入れられます。 暗号化の方法は、設定パラメーターpassword_encryptionによって決まります。 提示されたパスワード文字列がすでにMD5-encryptedまたはSCRAM暗号化形式である場合、password_encryptionに関係なくそのまま保存されます (システムは指定された暗号化されたパスワード文字列を復号化できないため、別の形式で暗号化できます) 。 これにより、ダンプ /復元中に暗号化パスワードをリロードできます。
VALID UNTIL 'timestamp': VALID UNTIL句は、ロールのパスワードが無効になる日時を設定します。 この句を省略すると、パスワードは常に有効になります。
INROLE role_name: INROLE句には、新しいロールが新しいメンバーとしてすぐに追加される1つ以上の既存のロールがリストされます。 (新しいロールを管理者として追加するオプションはないことに注意してください。別のGRANTコマンドを使用してください。)
IN GROUP role_name: IN GROUPは、INROLEの古いスペルです。
ROLE role_name: role句には、新しいロールのメンバーとして自動的に追加される1つ以上の既存のロールがリストされます。 (これは事実上、新しい役割を「グループ」にする。)
ADMIN role_name: ADMIN句はroleに似ていますが、名前付きロールは新しいロールWITH ADMIN OPTIONに追加され、このロールのメンバーシップを他の人に付与する権利が与えられます。
USER role_name: USER句は、role句の古いスペルです。
SYSID uid: SYSID句は無視されますが、下位互換性のために受け入れられます。
注
ロールの属性を変更するにはALTER ROLEを使用し、ロールを削除するにはDROP roleを使用します。 CREATE ROLEで指定されたすべての属性は、後のALTER ROLEコマンドで変更できます。
グループとして使用されているロールのメンバーを追加および削除するには、GRANTとREVOKEを使用することをお勧めします。
VALID UNTIL句は、ロール自体ではなく、パスワードの有効期限のみを定義します。 特に、有効期限は、非パスワードベースの認証方法を使用してログインするときに強制されない。
INHERIT属性は、付与可能な特権 (つまり、データベースオブジェクトとロールメンバーシップのアクセス特権) の継承を管理します。 CREATE roleおよびALTER ROLEで設定された特殊ロール属性には適用されません。 たとえば、CREATEDB権限を持つロールのメンバーである場合、INHERITが設定されている場合でも、データベースを作成する機能はすぐには付与されません。データベースを作成する前に、set roleを介してそのロールになる必要があります。
INHERIT属性は、下位互換性の理由からデフォルトです。以前のリリースのPostgreSQLでは、ユーザーは常にメンバーであるグループのすべての権限にアクセスできました。 ただし、NOINHERITは、SQL標準で指定されているセマンティクスに近い一致を提供します。
CREATEROLE特権に注意してください。 CREATEROLEロールの特権に対する継承の概念はありません。 つまり、あるロールに特定の権限がなくても、他のロールの作成が許可されている場合でも、独自の権限とは異なる権限を持つ別のロールを簡単に作成できます (スーパーユーザー権限を持つロールの作成を除く) 。 たとえば、ロール「user」にCREATEROLE特権があり、CREATEDB特権がない場合でも、CREATEDB特権を持つ新しいロールを作成できます。 したがって、CREATEROLE権限を持つロールは、almost-superuser-rolesと見なされます。
PolarDBには、CREATE ROLEと同じ機能を持つプログラムcreateuserが含まれています (実際には、このコマンドを呼び出します) が、コマンドシェルから実行できます。
CONNECTION LIMITオプションは、おおよそのみ適用されます。ロールに対して1つの接続「スロット」が残っている場合、2つの新しいセッションがほぼ同時に開始すると、両方が失敗する可能性があります。 また、制限はスーパーユーザーには適用されません。
このコマンドで暗号化されていないパスワードを指定するときは注意が必要です。 パスワードはクリアテキストでサーバーに送信され、クライアントのコマンド履歴またはサーバーログにも記録されます。 ただし、コマンドcreateuserは暗号化されたパスワードを送信します。 また、psqlには、後でパスワードを安全に変更するために使用できる \passwordコマンドが含まれています。
例
ログインできるがパスワードを与えないロールを作成します。
ROLE jonathan LOGINを作成します。パスワードでロールを作成する:
パスワード 'jw8s0F4' でユーザーを作成します。(CREATE USERは、LOGINを意味することを除いて、CREATE ROLEと同じです。)
2004の最後まで有効なパスワードでロールを作成します。 2005が1秒になると、パスワードは無効になります。
LOGIN PASSWORD 'jw8s0F4' でロールミリアムを作成 '2005-01-01 ';データベースを作成し、ロールを管理できるロールを作成します。
CREATEDB CREATEROLEでROLE管理を作成します。