スポンサーリンク

どうも、ウェブ系ウシジマくんです。

ローカルのMySQLでrootユーザーのパスワードって、うっかりしていると忘れてしまいがちですよね。

この記事では、そんな万が一に備えて、パスワードを変更する方法を紹介します。

まずはMySQLにログインする

ターミナルで次のコマンドを叩き、MySQLにログインします。

mysql -u root

MySQLにログインできたら、現在のデータベースを確認してみましょう。

show databases;

初期状態だと、次のようなデータベースが表示されるはずです。

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

ローカルのユーザー情報を管理しているのはmysqlというデータベースなので、

use mysql;

上記のように入力して、使用するデータベースを指定します。

これで準備ができました。

mysqlデータベース内のテーブルを確認する

データベースをmysqlに指定したら、 次に、テーブルを確認します。

show tables;

このコマンドを叩くと、mysqlというデータベース内にあるテーブルが一覧で表示されます。

+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| engine_cost               |
| event                     |
| func                      |
| general_log               |
| gtid_executed             |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| innodb_index_stats        |
| innodb_table_stats        |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| server_cost               |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+

一番下にuserというテーブルがありますよね。

ここのテーブルにrootユーザーのパスワードが格納されているので、これに対してパスワード変更SQLを発行することになります。

userテーブルに格納されているrootユーザーのパスワードを変更する

次のSQLを叩いて、カラムを確認してみてください。

show columns from user \G

そうすると、userテーブル内のカラムを縦型に表示してくれます。

その中に、authentication_stringというカラムがありますので、それをパスワード変更に使います。

なお、余談ですが、\Gコマンドはクエリ結果を縦表示に整形してくれるメタコマンドです。

ただし、その際にshow columns from user \G;のように\Gのあとにセミコロンをつけると、

表示はされますがERROR: No query specifiedのようにエラーがでますので、注意しましょう。

パスワードを変更するクエリを発行する

パスワードを変更する際に対象となるカラムがauthentication_stringとわかったので、次のクエリを発行してパスワードを変更します。

update user set authentication_string=password("変更したいパスワード") where User='root';

クエリの内容としては、

  • UPDATE構文で引数に指定したテーブルの内容を更新する(今回はuser)
  • setオプションでカラム名と更新する値を指定する(今回はカラム名がauthentication_stringで値がpassword("変更したいパスワード")になる)
  • where構文でどのレコードに対する更新するかを指定(今回はuserがrootが対象)

というような内容となります。

以前(MySQL5.6)ではpasswordというカラムでしたが、5.7でauthentication_stringに変更されたようなので、バージョンが5.7以降の方は要注意です。

参考リンク

What’s New in MySQL 5.7

Query OKがでれば、無事にパスワードが変更されたので、

flush privileges;

として権限変更を有効化します。

なお、これ以降はmysql -u rootのようにパスワード指定なしてログインしようとしてもエラーになります。

これでログインできれば大丈夫です、お疲れ様でした!

スポンサーリンク
おすすめの記事