【最新版!】MySQL5.7以降のパスワード変更方法を紹介!

皆さんMySQL使ってますか?今回はユーザーのパスワードを変更する方法を紹介します。実はこの部分、MySQL5.7で大きく手が入れられた部分で、5.6とそれ以降で結構書き方が変わりました

ところが、ネット上でも古いままの情報が放置されているためバージョンを確認しないでクエリをコピペするとパスワードが変更できない!なんて状態になりかねないポイントなんです。

そこで、この記事では最新のパスワード変更方法を紹介し、最後に以前の方法を参考として掲載します。さっくりとパスワードの変更をマスターしちゃいましょう!

一般ユーザーのパスワード変更方法

まずは一般ユーザーのパスワード変更からです。rootでログインしている場合、他のユーザーのパスワードを変更する権限があるため、次のクエリでMySQL内部からユーザーのパスワードを変更できます。

SET PASSWORD FOR ユーザー名@ホスト名 = 'パスワード';

クエリ

CREATE USER testuser;
SET PASSWORD FOR 'testuser'@'%' = 'hogehoge';

実行結果

Query OK, 0 rows affected (0.05 sec)
Query OK, 0 rows affected (0.07 sec)

実際にパスワードが設定できているかどうかはrootからログアウトし、testuserでログインし直すことで確認できます。一般ユーザーでログインしている場合、自身にパスワードの変更権限があれば、次の構文で自分のパスワードを変更することができます。

書式

SET PASSWORD = 'パスワード';

先に紹介したパスワードの変更からFOR ユーザー名の部分が落ちた形ですね。また、次の構文でもパスワードの変更を行うことができます。

ALTER USER ユーザー名@ホスト名 IDENTIFIED BY 'パスワード';

クエリ

ALTER USER 'testuser'@'%' IDENTIFIED BY 'fugafuga';

実行結果

Query OK, 0 rows affected (0.10 sec)

公式リファレンスによると、こちらの構文のほうが、アカウントの変更やパスワードの割り当てに使うには好ましいとされています。

参照:MySQL :: MySQL 8.0 Reference Manual :: 13.7.1.10 SET PASSWORD Syntax

rootのパスワード変更方法

この章ではrootのパスワードを変更する方法をみていきます。といっても、基本的には一般ユーザーの変更と構文はほとんど変わりません。以下、rootでMySQLにログインしている前提で話を進めます。

書式

SET PASSWORD = 'パスワード';

クエリ

SET PASSWORD = 'hogihogi';

実行結果

Query OK, 0 rows affected (0.01 sec)

要するに、前章で紹介した自分自身のパスワードを変更する方法をrootに適用しているだけ、ということです。また、ALTER USERでも同様にrootのパスワードを変更できます。

書式

ALTER USE [email protected] IDENTIFIED BY'パスワード';

クエリ

ALTER USER [email protected] IDENTIFIED BY 'fugifugi';

実行結果

Query OK, 0 rows affected (0.09 sec)

rootのパスワードがわからなくなるといろいろと大変なので、なるべく早くもとに戻すこともお忘れなく。

(参考)MySQL5.6以前の方法

MySQL5.6まではパスワードの変更方法が今回紹介したものと異なりました。

これから新しい環境でデータベースを構築していくぶんには上記で紹介した方法だけ覚えておけばいいですが、様々な事情で古い環境を使わざるを得ないこともあるでしょう。

そういったときのために5.6でのパスワードの変更方法を参考として掲載しておきます。

書式

SET PASSWORD FOR ユーザー名@ホスト名 = PASSWORD('パスワード');

rootのパスワードを変更する際は現在の方式と同様にFOR ユーザー名を落とせばオッケーです。

書式

SET PASSWORD = PASSWORD('パスワード');

他にはこんな方法もありました。

書式

UPDATE mysql.user SET password=PASSWORD('パスワード') WHERE user = 'root';
FLUSH PRIVILEGES;

5.6以前ではPASSWORD関数というものがあり、これがパスワードの暗号化を担っていました。ですが、5.7.6の時点で非推奨となり、8.0.11で完全に削除されました。

参照:
"MySQL :: MySQL 5.7 Reference Manual :: 12.13 Encryption and Compression
Functions"

"MySQL :: MySQL 8.0 Reference Manual :: 12.13 Encryption and Compression
Functions"

5.7以降でこれらの古いコマンドをつかうと、以下のようなエラーが出てしまいます。

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '('hogehoge') where user = 'root'' at line 1

5.6以前から使用している方は特に引っかかりやすいポイントですので、パスワード変更が必要になったらまずはMySQLのバージョンをしっかり確認するようにしましょう。

まとめ

いかがでしたか?今回はMySQLのユーザのパスワードを変更する方法をお伝えしてきました。バージョンごとに違いがあり、なかなか厄介な部分ですが、一度覚えてしまえばそこまで難しいものでもなかったはずです。

そうそう頻繁に使うものではありませんが、もし必要になったときはこの記事を見返してみてください。この記事が皆様のMySQL学習の一助となれば幸いです。

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

平山 晃

平山 晃

フリーのエンジニア・ライター。
プログラミング、ライティング、マーケティングなど、あらゆる手段を駆使して、
ハッピーなフルリモートワーカーを目指し中。

最近興味がある分野は深層強化学習。
積みゲー、積ん読がどんどん増加しているのがここ数年の悩み。
実は侍エンジニア塾の卒業生だったりします。