さっしーブログ

埼玉県在住のシステムエンジニアです。基本的には技術的な内容を中心に発信していきます。

MySQLパスワードが分からない場合の対処法

目次

MySQL Version

MySQL5.6.20

状況

rpmでインストールしたMySQLにログインする際にパスワードがわからずログインできなかったので...

仮想環境へはrootでログイン。

対処手順

1. MySQLを停止

もしMySQLが起動している場合は以下のコマンドで停止させます。

service mysql stop

2. MySQLをセーフティモードで起動

別でターミナルを起動させ、 以下のコマンドでMySQLをセーフティモードで起動させます。

sudo mysqld_safe --skip-grant-tables --skip-networking

3. MySQLへログイン

元のターミナルに戻りMySQLへログインする。
ユーザー名とパスワードは不要。

[vagrant@localhost ~]$ mysql

4. 「mysql」データベースを指定

mysqlデータベースにユーザーやパスワード情報が格納されているため使用データベースを「mysql」に指定する。

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

5.テーブルを確認する。

userテーブルにユーザー関連の情報が格納されている。

mysql> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| 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 |
+---------------------------+
28 rows in set (0.00 sec)

6. 現在登録されているユーザーを確認

mysql> select * from user;
+-----------------------+------+-------------------------------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+--------+-----------------------+------------------+
| Host | User | Password | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Create_user_priv | Event_priv | Trigger_priv | Create_tablespace_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max_updates | max_connections | max_user_connections | plugin | authentication_string | password_expired |
+-----------------------+------+-------------------------------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+--------+-----------------------+------------------+
| localhost | root | *ECF1420B4084E293DB63AAF9E3D7E2DE902B4CB3 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | | | | 0 | 0 | 0 | 0 | | | Y |
| localhost.localdomain | root | *ECF1420B4084E293DB63AAF9E3D7E2DE902B4CB3 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | | | | 0 | 0 | 0 | 0 | | | Y |
| 127.0.0.1 | root | *ECF1420B4084E293DB63AAF9E3D7E2DE902B4CB3 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | | | | 0 | 0 | 0 | 0 | | | Y |
| ::1 | root | *ECF1420B4084E293DB63AAF9E3D7E2DE902B4CB3 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | | | | 0 | 0 | 0 | 0 | | | Y |
+-----------------------+------+-------------------------------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+--------+-----------------------+------------------+
4 rows in set (0.00 sec)

※ちなみにパスワードは暗号化されている

7. 既存のパスワードの変更

UPDATE user SET Password=PASSWORD('root') WHERE User='root';

パスワードの変更が終わったら、mysqlを抜けて、先ほど別ターミナルで起動したセーフティモードのmysqlも停止させる。

8. MySQLログアウト

セーフティモード起動しいるMySQLからログアウトします

9. MySQLのプロセス停止

以下のコマンドで停止します。

ctrl + z

10. MySQLを通常起動

元のターミナルへ戻りMySQLを起動します。

service mysql start

11. パスワード変更後のMySQLへログイン

再度ログインしなおす。

mysql -u root -p

12. 設定したパスワードを入力

できた

以上