説明
このステートメントは主に以下の操作を実行するために使用されます:
データベースユーザーのパスワードを変更します。
データベースユーザーが使用するプロファイルを変更します。
データベースユーザー接続の暗号化方式を変更します。その他のユーザーパスワード変更方法については、SET PASSWORDを参照してください。
パスワードローテーションシナリオでローテーション期間を早期終了します。
データベースユーザーが保有するロールのデフォルトロールを変更します。
権限要件
現在のユーザー自身が実行できる変更を除き、このコマンドを使用して他のユーザーの情報を変更するには、ALTER USER権限が必要です。OceanBaseデータベースの権限の詳細については、Oracleモードの権限分類を参照してください。
使用上の制限及び注意事項
- プロキシユーザーがターゲットユーザーに代わってデータベースに接続する場合、現在はOBClientを介したデータベース接続のみをサポートしており、OBClientのバージョンはV2.2.6以降である必要があります。JavaドライバーとCドライバーによるデータベース接続は現在サポートされていません。
SET PASSWORD/ALTER USERによるパスワード変更後、古いパスワードの高速認証キャッシュは無効となり、古いパスワードではログインできなくなります。- 認証文字列の形式検証は
IDENTIFIED WITH ... BY VALUESを対象とし、$S$形式を検証します。$A$(sha2)などの誤った形式は拒否されます。 - 対応していないODPでは、SM3ユーザー(認証プラグイン
ob_sm3_passwordを使用するユーザー)の接続を完了できません。
構文
ALTER USER user_name
{ IDENTIFIED BY password
| IDENTIFIED WITH auth_plugin [BY password]
| EXPIRE PASSWORD ROLLOVER PERIOD
| PROFILE {"profile_name" | DEFAULT}
| REQUIRE {NONE | SSL | x509 | tls_option_list}
| DEFAULT ROLE
{ role_name[,role_name...]
| ALL [EXCEPT role_name[,role_name...]]
| NONE
}
| GRANT CONNECT THROUGH proxy_user_name [with_clause]
};
auth_plugin:
caching_sha2_password
| ob_sm3_password
tls_option_list:
tls_option
| tls_option_list tls_option
tls_option:
CIPHER str_value
| ISSUER str_value
| SUBJECT str_value
with_clause:
WITH ROLE {role_name[, role_name,...]}
| WITH NO ROLE
| WITH ROLE ALL EXCEPT {role_name[, role_name,...]}
パラメータの説明
パラメータ |
説明 |
|---|---|
| user_name | ユーザー名またはプロキシ対象のターゲットユーザー名を指定します。 |
| IDENTIFIED BY | ユーザーの新しいパスワードを指定します。 |
| IDENTIFIED WITH auth_plugin [BY password] | 認証プラグインと対応する認証情報を指定します。
説明V4.4.2バージョンでは、 |
| EXPIRE PASSWORD ROLLOVER PERIOD | パスワードローテーションシナリオでローテーション期間を早期終了し、古いパスワードを即座に無効にして、現在のパスワードのみを保持します。
説明このパラメータはV4.4.2 BP1バージョンからサポートされています。 |
| PROFILE | ユーザーが使用するプロファイルを指定します。
|
| REQUIRE | ユーザーが使用する暗号化プロトコルとしてNONE、SSL、X509、tls_option_listのいずれか一つを指定します。 |
| DEFAULT ROLE | ユーザーのログイン時のデフォルトロールを指定します。
注意
|
| GRANT CONNECT THROUGH | プロキシユーザーの使用を指定します。プロキシユーザーの使用例については、プロキシユーザーの使用を参照してください。 |
| proxy_user_name | プロキシユーザー名。権限付与後、このユーザーはターゲットユーザーに代わってデータベースに接続し、ターゲットユーザーのロール権限を使用してデータベース操作を実行できます。 |
| with_clause | プロキシユーザーがターゲットユーザーに代わってデータベースに接続する際に有効なロール権限を指定します。この句を指定しない場合、プロキシユーザーがターゲットユーザーに代わってデータベースに接続するとき、ターゲットユーザーのすべてのロール権限がデフォルトで有効になります。詳細については、以下の with_clause を参照してください。 |
auth_plugin
caching_sha2_password:SHA-256 ベースのパスワード認証プラグインで、より高いセキュリティレベルを提供します。説明
V4.4.2 では、V4.4.2 BP2 から認証プラグイン
caching_sha2_passwordがサポートされています。ob_sm3_password:このプラグインは、認証プロトコルとステートマシンをcaching_sha2_passwordと完全に共有します(AuthSwitch、高速認証/完全認証、TLS/RSAによるパスワードの暗号化送信)。ただし、アルゴリズムとメタデータは独立しており、パスワードの格納と認証検証に SHA-256 の代わりに SM3 ハッシュアルゴリズムを使用します。説明
V4.4.2 では、V4.4.2 BP3 から認証プラグイン
ob_sm3_passwordがサポートされています。
with_clause
注意
プロキシユーザーの有効なロール権限を指定する場合、パスワード付きのロール権限については、データベースに接続した後、SET ROLE role_name IDENTIFIED BY role_password; コマンドで手動でそのロールを有効化する必要があります。
WITH ROLE {role_name[, role_name,...]}:プロキシユーザーがターゲットユーザーに代わってデータベースに接続する際、指定されたロール権限を自動的に取得し、有効にします。つまり、ターゲットユーザーで指定されたロール権限のみが有効になります。WITH NO ROLE:プロキシユーザーがターゲットユーザーに代わってデータベースに接続する際、ターゲットユーザーのいかなるロール権限も自動的に取得しません。つまり、ターゲットユーザーのすべてのロール権限は無効になります。WITH ROLE ALL EXCEPT {role_name[ ,role_name,...]}:プロキシユーザーがターゲットユーザーに代わってデータベースに接続する際、ターゲットユーザーで指定されたロールを除く他のすべてのロール権限を自動的に取得し、有効にします。
例
ユーザー
user1のパスワードを変更します。obclient> ALTER USER user1 IDENTIFIED BY ******; Query OK, 0 rows affectedユーザー
user1の認証プラグインをcaching_sha2_passwordに変更します。obclient> ALTER USER user1 IDENTIFIED WITH caching_sha2_password BY ******; Query OK, 0 rows affectedユーザー
user1の接続暗号化プロトコルをSSLに変更します。obclient> ALTER USER user1 REQUIRE SSL; Query OK, 0 rows affectedユーザー
user1が使用する Profile をprofile1に変更します。obclient> ALTER USER user1 PROFILE "profile1"; Query OK, 0 rows affectedパスワードローテーションのシナリオで、ユーザー
user1のローテーション期間を早期に終了します。obclient> ALTER USER user1 EXPIRE PASSWORD ROLLOVER PERIOD; Query OK, 0 rows affectedユーザー
user1のデフォルトロールを設定します。obclient> CREATE ROLE role1; Query OK, 0 rows affected obclient> CREATE ROLE role2 IDENTIFIED BY ******; Query OK, 0 rows affected obclient> CREATE ROLE role3 IDENTIFIED BY ******; Query OK, 0 rows affected obclient> GRANT role1,role2,role3 TO user1; Query OK, 0 rows affected obclient> ALTER USER user1 DEFAULT ROLE role1; Query OK, 0 rows affected説明
ユーザー
user1はrole1の権限を直接使用できます。role2とrole3の権限は、ユーザーuser1がセッション内でrole2とrole3を有効にした後でないと使用できません。ロールを有効にするコマンドの詳細については、SET ROLEを参照してください。
シリアライズされた認証文字列(
$S$...)を直接書き込みます。obclient> ALTER USER user001 IDENTIFIED WITH ob_sm3_password BY VALUES '$S$005$ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.';