皆さんこんにちは!
今日は、セキュリティが頑固なMySQLのコマンドラインで急にログインが出来なくなったので、その解決方法の備忘録として書いていきます。
MySQLって厄介で、一度何かの設定をミスると再インストールなんてことも珍しくありません。ちなみに僕は2回再インストールしています。
ただ、毎回そんなことをしては時間はかかるし、エンジニアらしくありませんよね?
MySQLは同じエラーでも人によっては解決できない場合もあります。
なので、このコマンドを打ったら解決できたよ!っていうよりかは、どのようにして解決できたかを書いていきたいと思います。
同じようなエラーに引っかかった人、違うエラーに引っかかった人にも手助けになればなと思うので、是非ご参考程度にご覧ください!
MySQLのコマンドプロンプトからパスワードを入力してもできない場合は、Windowsであればコマンドプロンプト、Macならターミナルから操作します。なので、各自、MySQLの環境変数を設定してください。
MySQLのユーザー情報を取得#
コマンドプロンプト、もしくはターミナルで以下のコマンドを実行してください。
mysql select Host, User FROM mysql.user
// パスワードも取得したい場合
mysql select Host, User, authentication_string FROM mysql.user
※注意コマンドプロンプト、ターミナルからMySQLコマンドを実行する時、末尾にセミコロン(;)は付けないでください!
すると、このようにユーザー情報が出てくると思います。
+-----------+------------------+
| Host | User |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+------------------+
ここで、rootユーザーが無い場合は、create user
で作成して見て下さい。
ユーザーにアクセス#
mysql -uroot -hlocalhost -p
と入力し、以下の画面が出てきます。
Enter password:
僕は、ここで何も入力せずにEnterキーを押すと入れました!
これでも入れない場合は、新しいユーザーを作成してください(create user
)
パスワードの設定#
次に、パスワードの設定を行います。'YOUR_PASSWORD'
で自分のパスワードを入力してください。
set password = 'YOUR_PASSWORD';
権限を付与#
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YOUR_PASSWORD';
flush privileges;
MySQLコマンドプロンプトでアクセス#
MySQLのコマンドプロンプトを開き、先ほどせってしたパスワードを入力してください。
Enter password: ****************
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 22
Server version: 8.0.22 MySQL Community Server - GPL
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
このような画面になれば成功です!
port番号にミスアリ!?#
ここからは番外編です。
このような流れで大体の人はアクセスできると思うのですが、僕はアクセスできなかったんですよね。。。
ここで、先ほどWindowsのコマンドプロンプト、Macのターミナルからアクセスし、以下のコマンドを実行してください。
mysql> status
すると、色々な情報が出てくると思います。
TCP port: 3306
ここで、ポート番号出てきます。
そしたら、MySQLのmy.ini
を開いたところ(一応、my.iniの場所を載せておきます。人によっては、my.iniが無い場合もあるそうです。なので、ご参考までに。C:\ProgramData\MySQL\MySQL Server 8.0\)
[client]
# pipe=
# socket=MYSQ
port=3308
[mysqld]
# The next three options are mutually exclusive to SERVER_PORT below.
# skip-networking
# enable-named-pipe
# shared-memory
# shared-memory-base-name=MYSQL
# The Pipe the MySQL Server will use
# socket=MYSQ
# The TCP/IP Port the MySQL Server will listen on
port=3308
2回再インストールしていたので、port番号は(3308)になっていました。
なので、これを3306に変えたところ無事入れました!
いかがだったでしょうか?
MySQLのエラーは本当に厄介です。時間も潰れます。ですが、自分なりに考えたり、調べたりして頑張って解決してください!
応援してます!!
以上、「MySQLに急にログインできなくなった時の対処法」でした!
良ければ、LGTM、コメントお願いします。
また、何か間違っていることがあればご指摘頂けると幸いです。
他にも初心者さん向けに記事を投稿しているので、時間があれば他の記事も見て下さい!!
Thank you for reading