SET PASSWORD
SET PASSWORD ステートメントは、セキュリティで保護されたデータベースに対して次の機能を提供します。
•Master ユーザーは、Master ユーザーまたはそれ以外のユーザーのパスワードを変更できます。
•通常のユーザー(Master 以外のユーザー)は、データベースへのログオン パスワードを変更できます。
構文
SET PASSWORD [FOR 'ユーザー名'] = パスワード
ユーザー名 ::= データベースにログオンしているか、またはデータベースへのログオンを許可されているユーザーの名前
パスワード ::= パスワード文字列
備考
SET PASSWORD は、データベースでリレーショナル セキュリティが有効になっていることを必要とし、いつ発行してもかまいません(対照的に、
SET SECURITY は、Master ユーザーのセッションが現在の唯一のデータベース接続である場合のみ発行できます。
SET SECURITY を参照してください)。
SET PASSWORD は、Master ユーザーでも Master 以外の通常のユーザーでも発行できます。Master ユーザーは、データベースへのログオンを許可されているすべてのユーザーのパスワードを変更できます。通常のユーザーは自身のパスワードしか変更できません。変更されたパスワードは、ユーザーが次回データベースにログオンしたときに有効になります。
SET PASSWORD ステートメントを発行するユーザー | FOR 句付き | FOR 句なし |
Master | Master は、"Master" またはデータベースへのログオンを許可されているすべてのユーザーのユーザー名を指定できます。1 ユーザー名のパスワードが変更されます。 | データベース全体のパスワードが変更されます(つまり、データベース全体に影響を与える、Master ユーザーのパスワードが変更されます)。 |
通常 | 通常のユーザーは、自身のユーザー名を指定できます。ユーザーはデータベースにログオンしている必要があります。 当該ユーザーのパスワードのみ変更されます。 | SET PASSWORD ステートメントを発行したユーザーのパスワードのみが変更されます。ユーザーはデータベースにログオンしている必要があります。 |
1 ユーザー名は、PSQL データベースにログオン可能なユーザーを参照します。これは、オペレーティング システム レベルでユーザーに割り当てられている名前とは異なる場合があります。たとえば、オペレーティング システムにログオンできるユーザーは "Yogine" であるとします。データベース DEMODATA のセキュリティを有効にし、"Yogine" を "DeptMgr" というユーザー名で DEMODATA に追加します。この人物が DEMODATA にログオンする場合に要求されるユーザー名は、"DeptMgr" です。 |
パスワードの特性
•パスワードの最大長と使用できる文字については、『
Advanced Operations Guide』の
識別子の種類別の制限を参照してください。
•パスワードでは大文字小文字が区別されます。パスワードがアルファベット以外の文字で始まる場合は、パスワードを一重引用符で囲む必要があります。
•先頭文字以外であれば、空白文字をパスワードで使用することができます。パスワードに空白文字が含まれる場合は、パスワードを一重引用符で囲む必要があります。原則として、パスワードに空白文字を使用することは避けてください。
•"Password" は予約語ではありません。これは、テーブルまたは列の名前として使用することができます。ただし、SQL ステートメント内でテーブル名または列名として使用する場合は、"password" はキーワードであるため、二重引用符で囲む必要があります。
•リテラルの "null" をパスワードとして使用する場合は、単語を一重引用符で囲む必要があります('null')。文字列を引用符で囲むことによって、データベースのセキュリティを無効にするための SET SECURITY = NULL ステートメントとの混乱を防ぎます。
例
次の例では以下のことを示します。Master ユーザーは、パスワード "bluesky" を使ってデータベースのセキュリティを有効にします。次に、Master ユーザーは "user45" というユーザーにログオン権限を与えてパスワードを "tmppword" と指定し、user45 にテーブル person の SELECT 権限を与えます。その後で、Master ユーザーは Master のセキュリティ パスワードを "reddawn" に変更し、user45 のパスワードを "newuser" に変更します。
SET SECURITY = bluesky
-- これにより、データベースのセキュリティが有効になります
GRANT LOGIN TO user45:tmppword
GRANT SELECT ON person TO user45
SET PASSWORD = reddawn
-- Master のパスワード、つまり、データベース全体のパスワードを変更します
SET PASSWORD FOR user45 = newuser
次の例では、user45 はパスワード "newuser" でデータベースにログオンしていることを前提とします。user45 は自分のパスワードを "tomato" に変更し、次に person テーブル内のすべてのレコードを選択します。
SET PASSWORD FOR user45 = tomato
-- これは、user45 のパスワードのみを変更します
SELECT * FROM person
-- user45 は今までどおり、テーブル person の SELECT 権限を持ちます
関連項目