ALTER USER user_specification [, user_specification] ...
user_specification:
user PASSWORD EXPIRE
ALTER USER
ステートメントは、MySQL アカウントを変更します。これを使用するには、mysql
データベースに対するグローバルな CREATE USER
権限または INSERT
権限が必要です。
ALTER USER
は、MySQL 5.6.6 で追加されました。ただし、5.6.6 で ALTER USER
は Password
カラムも空の文字列に設定するため、このステートメントは 5.6.7 まで使用しないでください。
各アカウントについて、ALTER USER
はそのパスワードを期限切れにします。例:
ALTER USER 'jeffrey'@'localhost' PASSWORD EXPIRE;
各アカウント名には、セクション6.2.3「アカウント名の指定」で説明されている形式が使用されます。アカウント名のユーザー名の部分のみを指定した場合は、'%'
のホスト名の部分が使用されます。
アカウントのパスワードを期限切れにすると、mysql.user
テーブルの対応する行に影響を与えます。サーバーは、password_expired
カラムを 'Y'
に設定します。
アカウントのパスワードが期限切れになった場合は、クライアントセッションが制限モードで動作します。制限モードでは、ユーザーが SET PASSWORD
ステートメントを発行してアカウントの新しいパスワードを確立するまで、そのセッションで実行された操作はエラーになります。
mysql> SELECT 1;
ERROR 1820 (HY000): You must SET PASSWORD before executing this statement
mysql> SET PASSWORD = PASSWORD('new_password');
Query OK, 0 rows affected (0.01 sec)
mysql> SELECT 1;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)
MySQL 5.6.8 の時点では、この制限された動作モードでは SET
ステートメントが許可されます。これは、そのアカウントのパスワードが、old_passwords
をそのデフォルトとは異なる値に設定する必要のあるハッシュ形式を使用している場合に役立ちます。
管理ユーザーがアカウントのパスワードをリセットすることも可能ですが、そのアカウントの既存のセッションはすべて制限されたままになります。ステートメントを正常に実行するには、そのアカウントを使用しているクライアントは切断し、再接続する必要があります。
SET PASSWORD
を使用してパスワードをその現在の値に設定することによって、パスワードを「リセット」できます。適切なポリシーとして、別のパスワードを選択することをお勧めします。