Задать вопрос
Sergei_Erjemin
@Sergei_Erjemin
Улыбайся, будь самураем...

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) -- почему?

Вот все работало в субботу (вчера). Обновился на домашнем компе Docker Desktop (под MacOS Sonoma 14.0) и началось. Сначала все базы во внешнем томе потерялись. Точнее не потерялись, а перестал контейнер стартовать. Самое странное, что восстановленные Docker Desktop и каталога/тома с самими БД из Time Machine не починили проблему. Наверное надо еще что-то системное из Time Machine вернуть.

Ну ладно. Для пет-проектов не важно. Можно и новую базу взять (и новый контейнер построить, заодно посмотреть что в 11ю MariaDB завезли). Сделал вот такой контейнер:
version: "3.1"
services:
  mariadb:
    container_name: MariaDB_11.1.2
    image: mariadb:11.1.2
    volumes:
      - /Users/[user]/docker-data/mariadb_data:/var/lib/mysql
      - /tmp:/var/run/mysqld
    environment:
      - MARIADB_ROOT_PASSWORD=***
      - TZ=Europe/Moscow
    ports:
      - 127.0.0.1:3306:3306
    command:
      --bind-address=0.0.0.0
      --skip_ssl=true
    restart: always

Создал в базе пользователя, проверил через DataGrip -- коннектится, создает таблицы, запросы выполняет...

Но Python/Django ругается:
django.db.utils.OperationalError: (2002, "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)")

Заглянул в /tmp/ -- там никакого mysql.sock нет. Есть mysqld.sock. Странно, раньше все находило. Ну ладно, переделал контейнер (добавил --socket=/var/run/mysqld/mysql.sock):
version: "3.1"
services:
  mariadb:
    container_name: MariaDB_11.1.2
    image: mariadb:11.1.2
    volumes:
      - /Users/[user]/docker-data/mariadb_data:/var/lib/mysql
      - /tmp:/var/run/mysqld
    environment:
      - MARIADB_ROOT_PASSWORD=***
      - TZ=Europe/Moscow
    ports:
      - 127.0.0.1:3306:3306
    command:
      --bind-address=0.0.0.0
      --skip_ssl=true
      --socket=/var/run/mysqld/mysql.sock
    restart: always

В папке /tmp стал появляться mysql.sock. Но ошибка не пропала. Django продолжает ругаться "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)"

Проверил MYSQL CLIENT_CFLAGS и MYSQL CLIENT_LDFLAGS -- ничего не изменилось. DataGrip, несмотря на изменение соккета, продолжает коннектиться. А mysqlclient -- не хочет. Я mysqlclient и переустанавливал. И вообще нет идей как это починить.

UPD1: Переустановил системный mariadb-connector-c. Стал ругаться что нет mysqlclient... хотя он есть!

UPD2: есть идея обновиться до Sonoma 14.1... и если не поможет -- вообще вернуть состояние всей системы на вечер субботы, когда еще все работало. Но это уступки трудностям (и долго), хочется разобраться.
  • Вопрос задан
  • 231 просмотр
Подписаться 1 Простой 8 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы