あきぞらです。
個人開発用のアプリのために、Docker
でMySQL
のコンテナを立ち上げようと思ったところ、
「Access denied
」で接続できず、小一時間ハマってしまいました。
今回はその解消方法を記載していきたいと思います!
目次
docker-compose.yml の内容
docker-compose.yml
は以下のように記載していました。
mysql: image: mysql:5.7.11 environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=laravel - MYSQL_USER=laravel - MYSQL_PASSWORD=password ports: - "13306:3306"
ローカルPCからMySQLに接続を試みる
ローカルのPCからMySQL
に接続してみます。
$ mysql -u root -p -h localhost -P 13306 Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Access denied
で返されてしまい、途方にくれてしまいました。
Access denied の原因
調べていくと、どうやらホストの指定はlocalhost
ではダメなようです。
-h localhost
と指定するとMySQL
のインスタンスのプロセスを直接探しに行って接続しにいく、という動きになるようです。
MySQLの接続コマンドのホストを変えて解決!
localhost
ではなく、127.0.0.1
に変更して接続コマンドを打ってみます。
$ mysql -u root -p -h 127.0.0.1 -P 13306 Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.7.11 MySQL Community Server (GPL)
無事に接続できました!
localhost
でダメだった人は、127.0.0.1
で試してみてください。
Docker Desktopを再起動してみる(Windows)
Windowsを使っている人は、Docker Desktopを再起動してみるのも手です!
ポートが変に競合して実はMySQLが起動できていない可能性があります。
PCごと再起動してみてもOKです。
再起動したら、もう一度 docker-compose up -d
で起動させてみましょう。
うまくかもしれません。
では、また!