質問: WindowsにインストールしたMySQLで、 ``` mysqld --skip-grant-tables ``` を実行したあとに ``` mysql -u root ``` を実行しても ``` ERROR 2003 (HY000): Can’t connect to MySQL server ``` と出て怒られてしまいます。 タスクマネージャーやサービスのページを確認してMySQLの動作を確認したところ、 ``` net start mysql ``` を実行した際にはMySQLが実行されますが、--skip-grant-tablesを実行した際にはMySQLが立ち上がっていないことがわかりました。 調べても同様の事象について書かれた記事などが見つからなかったため、質問させていただきました。なにか考えられる原因はありませんか? 実行環境 OS:WIndows 10 Pro 1803 Visual C++ 2017 Redistributable(x64) MySQL 8.0.15 ダウンロード後、ファイル名を「mysql」とし、Cドライブ配下に設置。 mysqlフォルダ内に「data」フォルダを作成 管理者権限のコマンドプロンプトで「bin」に移動した後、 ``` mysqld --install mysqld --initialize ``` を実行。その後に、root権限でMySQLを実行するために上記の作業をしたところ、skip-grant-tablesの場合うまく行かないことがわかりました。 MAMPなど影響の有りそうなファイルは消しており、エクスプローラーでmysqlを検索するなどして怪しいファイルの有無も確認済みです。 UdemyのこちらのコースでMySQLをWindowsにインストールする作業をやっていた際にひっかかりました。 https://www.udemy.com/course/python-beginner/
回答: 私もまさにUdemyの同じコース、同じ場所で詰まりましたが解決できたので共有します。 最近MySQLをダウンロードすると8.0になっていますが、mysqld --initialize した際にrootの初期パスワードが設定されてしまい、それを入力しないとrootでログインできないようです。 (おそらく講師の方の実演時はMySQL5.7) mysqld --initialize とする代わりに ``` mysqld --initialize --console ``` とすると初期パスワードがコンソールに出力されますので、mysql -u root -p [Enter]してそのパスワードを入力すればログインできます。 詳しくは以下。 https://engineer-milione.com/tips/mysql-windows.html なお、その後のUdemyのレッスン内でmysqlと接続する際も、講師の方がrootのユーザー名とパスワードを省いている部分にきちんと指定してやる必要があります。 (SQLAlchemyの sqlalchemy.create_engine()の引数など) こちらも詳細は以下。 https://financial-it-engineer.hatenablog.com/entry/20170112/1484220341