ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2) と出てmysqlに接続できない
内容
docker-compose exec db mysql -u root -p
コマンドでmysqlに接続ができない
実行環境
・windows10
・docker
・mysql Ver 15.1 Distrib 10.5.12-MariaDB
・debian11
・Python 3.8.2
エラー内容
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2)
各種ディレクトリ構成、内容
.
├── 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
##データベース
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
試したこと
・docker exec -it python-db sh
でコンテナに入りmysql_config --socket
でmysqld.sock
があることは確認済み
・ps ax | grep mysql
でプロセスを確認してみた所 19608 pts/1 S+ 0:00 grep mysql
とありおそらくmysqlがうまく起動?できてないみたいです。
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
root@コンテナid:/# ls -l /run/mysqld/
合計 0
-rwxrwxrwx 1 root root 0 2月 16 18:32 mysqld.sock
root@コンテナid:/# ls -l /run/mysqld/mysqld.sock
-rwxrwxrwx 1 root root 0 2月 16 18:32 /run/mysqld/mysqld.sock
0