Dockerを使ってMySQL 8.0をパスワードなしでローカル接続する

以下の手順で、MySQL 8.0をDockerで起動し、パスワードなしでローカル接続できるように設定する方法を説明します。

手順 1: Dockerコンテナの起動

まず、パスワードなしでMySQLコンテナを起動します。MYSQL_ALLOW_EMPTY_PASSWORD環境変数をyesに設定します。

docker run --name mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d -p 3306:3306 mysql:8.0

このコマンドは、以下のことを行います:

  1. mysqlという名前のコンテナを作成
  2. MySQLのルートユーザーのパスワードを空に設定
  3. コンテナをバックグラウンドで実行
  4. ローカルの3306ポートをコンテナの3306ポートにマッピング

手順 2: MySQLクライアントで接続

次に、ローカルのMySQLクライアントを使ってMySQLサーバーに接続します。パスワードなしで接続するために、-pオプションを省略します。

mysql -h 127.0.0.1 -P 3306 -u root

注: mysql のコンテナが立ち上がるまでの間

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 2

というエラーが表示されます。その際数秒待って再度接続を試みてください。

トラブルシューティング

コンテナが正しく起動しているか確認:

docker ps -a

コンテナのログを確認:

docker logs mysql

MySQLサーバーが正しく起動していない場合、ログを確認してエラーメッセージをチェックし、適切な対策を講じてください。