"CREATE USER" SQL 01/26/98 日本語PostgreSQL 日本語PostgreSQL

名称

create user -- PostgreSQL のインスタンスに新しいユーザを作ります。

形式

create user <username>
		[with password password]
		[createdb | nocreatedb]
		[createuser | nocreateuser]
		[in group group-1, ..., group-n]
		[valid until 'abstime']
    

説明

create user は PostgreSQL のインスタンスに新しいユーザを加えます。新しいユーザは usesysid を 'SELECT max(usesysid) + 1 FROM pg_shadow' から与えられます。これは PostgreSQL のユーザの usesysid はユーザのオペレーティングシステム(OS) のユーザID に関連していないということです。このルールの例外は 'postgres' ユーザで、この userid は initdb プロセスの中で usesysid として使われます。もし、すべてのユーザに対して OS のユーザID と usesysid とをマッチさせたいのなら、createuser(1) スクリプトを使ってください。
'with password' 句はユーザのパスワードを pg_shadow リレーションにセットします。この理由で、pg_shadow は 'public' グループにはアクセス可能になりません。initdb(1) が実行されると、postgres ユーザのパスワードは最初 NULL にセットされることに注意してください。pg_shadow リレーションのユーザのパスワードが NULL の時、ユーザ認証は歴史的な方法で続行します。(HBA、PG_PASSWORD など)しかし、もしユーザにパスワードがセットされていると、新しい認証システムは PostgreSQL のインスタンスに設定された他のものをさしおき、pg_shadow リレーションに保存されたパスワードを認証に使います。この認証システムがどのように機能するかの詳細についはcrypt(3) を参照してください。'with password' 句がなければ、ユーザのパスワードは空の文字列になり、これは上記の認証システムのメソッドで NULL 値と同じことになります。
createdb/nocreatedb 句はユーザのデータベース作成能力を定義します。もし createdb が指定されれば、その定義されるユーザは彼または彼女の所有するデータベースを作ることができるようになります。nocreatedb はユーザがデータベースを作ることを拒否します。この句がなければ、nocreatedb がデフォルトで使われます。
createuser/nocreateuser 句は PostgreSQL のインスタンスに新しいユーザを作ることを許可/拒否します。この句がなければ、この属性のユーザの値は nocreateuser になります。
現在、'in group' 句は機能しません。この句を作る目的は、ユーザのグループをいじることにあります。(pg_group リレーションに定義されています)
最後に、'valid until' 句は、そのユーザの PostgreSQL へのログインが無効となる絶対時間をセットします。もしユーザが pg_shadow リレーションにパスワードを定義していなければ、その有効期限はユーザ認証中にチェックされません。この句がなければ、NULL 値が pg_shadow のこの属性に保存されて、ログインはずっと有効となります。

---
--- パスワードなしでユーザを作ります
---
create user tab;
    
---
--- パスワード付きでユーザを作ります
---
create user tab with password jw8s0F4;
    
---
--- パスワード付きでユーザをつくり、アカウントは 2001 まで有効とします。
--- 1秒でも 2002 年と刻むと、そのアカウントは無効となります。
---
create user tab with password jw8s0F4 valid until 'Jan 1 2002';
    
---
--- ユーザがデータベースを作れるようにアカウントを作ります
---
create user tab with password jw8s0F4 createdb;
    

参照

crypt(3) user(l) user(l) .