MySQL上のユーザーのパスワードを変更するにはSET PASSWORD
文を利用します。
SET PASSWORD FOR katsube@localhost = 'password here';
MySQLのバージョンによって記述方法が異なります(上記は5.7以降の書き方)。また同様のSQLでALTER USER
文があり、こちらは有効期限などより細かい設定が可能です。
利用方法
MySQL 5.7以降
SET PASSWORD
文の使い方は非常にシンプルで、以下のようにユーザーを指定しないとログイン中のユーザー自身のパスワードを変更します。
SET PASSWORD 'password here';
ログイン中の自分以外を変更したい場合は、FOR
句を付けてその後に指定します。
SET PASSWORD FOR katsube@localhost = 'password here';
MySQL5.6以下
5.7以降とそれほど変わらないのですが、パスワードを指定する際にPASSWORD()
関数を通す必要があります。
SET PASSWORD = PASSWORD('password here'); SET PASSWORD FOR 'katsube'@'localhost' = PASSWORD('password here');
5.7では非推奨(廃止予定)となっており、8.0ではドキュメントから姿を消しています。MySQLのバージョンアップを行う際にお気をつけください。
その他
旧パスワードを指定
MySQL8.0.13から、変更前と変更後のパスワードを同時に渡しよりセキュアに変更する文法が追加されています。
SET PASSWORD FOR katsube@localhost = 'new password' REPLACE 'current password';
current password
とある箇所に現在のパスワードを指定します。もし異なっていた場合はエラーとなり変更されません。
ALTER USERとの違い
SET PASSWORD
と似たようなことができるSQLにALTER USER
文があります。
ALTER USER katsube@localhost IDENTIFIED BY 'password here';
公式ドキュメントによると以下の通り、ユーザー情報とパスワードの変更を行う場合にALTER USER
文を利用します。
Note Rather than using SET PASSWORD to assign passwords, ALTER USER is the preferred statement for account alterations, including assigning passwords.
※13.7.1.10 SET PASSWORD Statement
関連
参考ページ
- MySQL5.6(ja) 13.7.1.7 SET PASSWORD 構文
- MySQL5.7(en) 13.7.1.7 SET PASSWORD Statement
- MySQL5.8(en) 13.7.1.10 SET PASSWORD Statement