docker コンテナ作成後にmysql接続できなかくて苦戦しました

<h1> 内容 </h1>
``` docker-compose exec db mysql -u root -p ``` コマンドでmysqlに接続ができない

<h1>実行環境</h1>
・windows10
・docker
・mysql  Ver 15.1 Distrib 10.5.12-MariaDB
・debian11
・Python 3.8.2

<h1>エラー内容</h1>
```
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2)
```

<h1>各種ディレクトリ構成、内容</h1>
```
.
├── Dockerfile
├── docker-compose.yml
├── mysql
│   ├── Dockerfile
│   ├── my.cnf
│   └── sqls
│   │   └── initialize.sql
│   └──mysql-data
├── src
│   ├── __init__.py
│   ├── sample.py
│   └── Dockerfile
├── docker-compose.yml
├── README.md
└── requirements.txt
```

```docker-compose.yml
version: '3'
services:
#database container
  db:
    image: mysql:5.7
    ports:
      - 3306:3306
    expose:
      - '3306'
    restart: always
    container_name: python-db
    build: ./mysql/
    volumes:
      - ./mysql/mysql_data:/var/lib/mysql
      - ./mysql/sqls:/docker-entrypoint-initdb.d
      - ./mysql/my.cnf:/etc/mysql/conf.d/my.cnf
    environment:
      #userパスワード
      - MYSQL_DATABASE=test_database
      - MYSQL_USER=user
      - MYSQL_PASSWORD=docker
      - TZ=Asia/Tokyo
      #rootパスワード
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_ALLOW_EMPTY_PASSWORD=yes
      - MYSQL_RANDOM_ROOT_PASSWORD=no
    stdin_open: true
      
  #application container
  python3:
    ports:
      - "8000:80"
    container_name: python3
    build:
      context: ./src/
    links:
      - db
    stdin_open: true
```
```Dockerfile
##データベース
FROM mysql:5.7
# EXPOSE 3306
RUN touch /var/log/mysql/mysqld.log
RUN touch /run/mysqld/mysql.sock

ADD  ./mysql/my.cnf /etc/mysql/conf.d/my.cnf
RUN chmod 644 /etc/mysql/my.cnf
CMD ["mysqld"]

##アプリケーション本体
FROM python:3.6

ARG project_dir= /src

WORKDIR $project_dir

RUN apt-get update
RUN apt-get -y install locales && \
    localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
ENV TZ JST-9
ENV TERM xterm

RUN apt-get install -y vim less
RUN pip install --upgrade pip
RUN pip install --upgrade setuptools

RUN python -m pip install jupyterlab
```

```my.conf
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

[mysql]
default-character-set=utf8

[client]
default-character-set=utf8mb4
user = docker
password = docker
```

<h1>試したこと</h1>
・```docker exec -it python-db sh```でコンテナに入り``` mysql_config --socket ```で```mysqld.sock```があることは確認済み

・``` ps ax | grep mysql```でプロセスを確認してみた所　```19608 pts/1    S+     0:00 grep mysql```とありおそらくmysqlがうまく起動？できてないみたいです。

```terminal
root@コンテナid:/# ls -l /run/
合計 8
drwxrwxrwt 2 root root 4096 12月 20 09:00 lock
drwxrwxrwx 2 root root 4096  2月 16 18:32 mysqld
-rw-rw-r-- 1 root utmp    0 12月 20 09:00 utmp
```

```terminal
root@コンテナid:/# ls -l /run/mysqld/
合計 0
-rwxrwxrwx 1 root root 0  2月 16 18:32 mysqld.sock
```

```terminal
root@コンテナid:/# ls -l /run/mysqld/mysqld.sock
-rwxrwxrwx 1 root root 0  2月 16 18:32 /run/mysqld/mysqld.sock
```

<h1>試行錯誤</h1>
<a href="https://qiita.com/jhorikawa_err/items/fb9c03c0982c29c5b6d5">参考サイト</a>
<a href="https://takuya-1st.hatenablog.jp/entry/2019/03/11/115831">参考サイト</a>
<a href="https://timesaving.hatenablog.com/entry/2021/11/23/150000#%E7%92%B0%E5%A2%83">参考サイト</a>
<a href="https://qiita.com/hondy12345/items/d32ed749fb49e9da7de6">参考サイト</a>
このようなサイトを参考にファイル内の記述を変更してみたりしてみましたが、効果なしでした。

<h1>解決策</h1>
docker-compose.ymlファイル内の記述内容を下記のように書き換えました。

```docker-compose.yml
version: '3.3'
services:
  python3:
    ports:
      - 8000:80
    build: ./src/
    links:
      - db
    stdin_open: true
  db:
    image: mysql:8.0
    ports:
      - 3306:3306
    restart: always
    volumes:
      - ./mysql/mysql_data:/var/lib/mysql
      - ./mysql/sqls:/docker-entrypoint-initdb.d
      - ./log/mysql:/var/log/mysql
    environment:
      MYSQL_DATABASE: database
      MYSQL_USER: user
      MYSQL_PASSWORD: pass
      MYSQL_ROOT_PASSWORD: password
      eTZ: Asia/Tokyo
    stdin_open: true
```

・変更内容はbuildディレクトリをmysqlとアプリケーションで分けていましたが、それをアプリケーション側にまとめました。

・mysql dockerイメージを```mysql8.0```に変更し```docker-compose up -d --build```して```docker exec -it <コンテナ名> bash```でコンテナに入り、```mysql -u root -p```とすると

```terminal
root@<container id>:/# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 31
Server version: 8.0.28 MySQL Community Server - GPL

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

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に接続できなかったのか今一分かっておりません・・・