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管理を作成します。