Oracle ユーザーのパスワードを変更する

# oci_password_change

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_password_change — Oracle ユーザーのパスワードを変更する

### 説明

function oci_password_change(
resource `$connection`,
string `$username`,
string `$old_password`,
string `$new_password`
): bool
function oci_password_change(
string `$database_name`,
string `$username`,
string `$old_password`,
string `$new_password`
): resource

ユーザー `username` のパスワードを変更します。

oci_password_change() が役立つのは、 PHP コマンドラインスクリプトで使う場合や PHP アプリケーションで持続的でない接続を使う場合です。

### パラメータ

`connection`

  oci_connect() あるいは oci_pconnect() が返す Oracle 接続 ID。

`username`

  Oracle のユーザー名。

`old_password`

  旧パスワード。

`new_password`

  設定したい、新しいパスワード。

`database_name`

  データベース名。

### 戻り値

`database_name` が指定された場合、 oci_password_change() は 成功時に `true` を返します。 失敗した場合に `false` を返します。 `connection` が指定された場合、 oci_password_change() は 成功時に接続リソースを返します。 失敗した場合に `false` を返します。

### 例

例1 oci_password_change() で、接続中のユーザーのパスワードを変更する例

    <?php

    $dbase      = 'localhost/orcl';
    $user       = 'cj';
    $current_pw = 'welcome';
    $new_pw     = 'geelong';

    $c = oci_pconnect($user, $current_pw, $dbase);
    oci_password_change($c, $user, $current_pw, $new_pw);
    echo "New password is : " . $new_pw . "\n";

    ?>

例2 oci_password_change() で、接続とパスワードの変更を一度に行う例

    <?php

    $dbase      = 'localhost/orcl';
    $user       = 'cj';
    $current_pw = 'welcome';
    $new_pw     = 'geelong';

    $c = oci_pconnect($user, $current_pw, $dbase);
    if (!$c) {
        $m = oci_error();
        if ($m['code'] == 28001) { // "ORA-28001: the password has expired"
            // ログインとパスワードリセットを同時に行います
            $c = oci_password_change($dbase, $user, $current_pw, $new_pw);
            if ($c) {
                echo "New password is : " . $new_pw . "\n";
            }
        }
    }

    if (!$c) {  // 28001 以外のエラーが発生したり、パスワードの変更に失敗したりした場合
        $m = oci_error();
        trigger_error('Could not connect to database: '. $m['message'], E_USER_ERROR);
    }

    // 接続 $c が使えます
    // ...

    ?>

### 注意

> 注意:

> この関数を使うにせよ Oracle から直接操作するにせよ、 パスワードを変更する際には十分注意しましょう。 持続的接続を使っている場合、PHP アプリケーションからは古いパスワードでも認証できてしまいます。 ユーザーのパスワードを変更したら、ウェブサーバーをすべて再起動させるのがお勧めの方法です。

> 注意:

> Oracle クライアントライブラリあるいはデータベースを 11.2.0.3 より前のリリースから 11.2.0.3 以降のバージョンにアップグレードするときには、クライアントとサーバーのバージョンを同時に上げないと oci_password_change() は "ORA-1017: invalid username/password" エラーとなってしまいます。

> 注意:

> oci_password_change() の 2 番目の書式は OCI8 バージョン 1.1 から利用可能です。

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open