Python日記

【MySQL】新規パスワードの設定。mysql -u root -pでログインできないとき(ERROR 1064 (42000))の対処法

2020年6月28日

MySQL 新規パスワードの設定をして接続するの巻 mysql -u root -pでログインできないときの対処法

MySQLにはパスワードを使わずにログインもできますが、

WEBアプリなどと連携するときは、パスワードが必要になります。

お悩みさん

MySQLにログインしたいけど、パスワードが分からない!

僕もパスワードを後から設定する必要があったときに、散々苦労しました。

今回は、mysql -u root -pを使ってログインするときに起こったエラーの対象法を記載していきます。

この記事で学べること

  1. ERROR 1064 (42000)の対処法
  2. MySQLのパスワード設定
  3. mysql -u root -pでのログイン方法

環境

OSMac 10.15.4
Pythonpython 3.9
仮想環境Poetry
Homebrew8.0.19 Homebrew

【悩み】MySQLのパスワードが分からない(設定できていない)

これまでMySQLに以下のコマンドを使って、rootだけで入っていました。

mysql -uroot

しかし、PythonのFlaskでWEBアプリを作っていた際に、

MySQLのパスワードが必要だという問題にぶち当たります。

というわけで、MySQLのパスワードを設定しなければなりません

失敗した方法(パスワードのアップデート)

まずMySQLにrootで入って、パスワードをアップデートを試してみました。

update user set authentication_string=PASSWORD('password') where User='root';
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 '('xxxxxxxx') where User='root'' at line 1

しかし、上記のようなエラーができます。

パスワードの設定

セーフモードでログイン

仕方ないので、一度、ストップさせ、セーフモードに変更した上で設定を試してみることにします。

mysql.server stop
mysqld_safe --skip-grant-tables

パスワードを使わずに、入ってみます。

mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.19 Homebrew

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>

無事に入れました。

失敗した方法(セーフモードでも失敗)

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

Database changed

先と同じようにパスワードのアップデートを試してみます。

update user set authentication_string=PASSWORD('password') where User='root';

しかし、結局エラーがでました。やはりダメです!

成功した方法 :ALTER USER 'root'@'localhost' identified BY 'password';

それから数時間、頭を悩ましましたが、

正解はこっちでした!

以下の「password」の部分には任意のパスワードを設定してください

ALTER USER 'root'@'localhost' identified BY 'password';
Query OK, 0 rows affected (0.01 sec)
解決さん

やったー!!!OKがでた!

セーフモードなので、一度出ます。

exit;

MySQLにパスワードでログイン

改めてMySQLをスタートさせます。

mysql.server restart
Shutting down MySQL
.. SUCCESS!
Starting MySQL
.. SUCCESS!

いざ、パスワードでログインを試みます!

mysql -u root -p

さきほど設定した、パスワードを入力します。

Enter password:

するとこの表示が・・・


Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.19 Homebrew

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>

無事に入れました!これでパスワードの設定完了です!

まとめ

この記事で学べんだこと

  1. ERROR 1064 (42000)の対処法
  2. MySQLのパスワード設定
  3. mysql -u root -pでのログイン方法

MySQL初心者がぶち当たりであろうポイントの一つだと思います。

パスワードを設定しておけば、pythonやflaskでMySQLを連携させることができるようになるので、

ぜひ覚えておくことをおすすめします。

-Python日記
-,