ОШИБКА 2002 (HY000): Невозможно подключиться к локальному серверу через сокет ‘/var/run/mysqld/mysqld.sock’ (2). Используется mariadb на Debian trixie.

Вопрос или проблема

Я понимаю, что это распространенная проблема, но ни один из других постов не помог решить нашу проблему (1, 2, 3, 4, 5, 6).
Я установил mariadb с помощью ansible как часть установки openstack, и он выдал следующую ошибку:

  • Задача Ansible:

      name: DB - настройка /root/.my.cnf
        become: true
        copy:
          dest: /root/.my.cnf
          content: |
            [client]
            user=root
            password="{{ DB_root_password }}"
            socket  = /var/run/mysqld/mysqld.sock
        tags: db_config
    
      - name: DB - Настройка MariaDB
        become: true
        template:
          src: openstack.cnf
          dest: /etc/mysql/mariadb.conf.d/openstack.cnf
        tags: db_config
    
      - name: DB - настройка доступа к Keystone 1/3
        become: true
        template:
          src: keystone.sql.j2
          dest: /root/keystone.sql
        tags: db_config
    
      - name: DB - предоставить доступ к Keystone 2/3
        become: true
        shell: mysql -u root < /root/keystone.sql
        tags: db_config
    
  • Ошибка:

“stderr”: “ERROR 2002 (HY000): Невозможно подключиться к локальному серверу через
socket ‘/var/run/mysqld/mysqld.sock’ (2)”

  • Дополнительная информация:
~# service mariadb status
Process: 1039769 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Process: 1039771 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ]   && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)
Process: 1039852 ExecStart=/usr/sbin/mariadbd $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION (code=killed, signal=ILL)
Main PID: 1039852 (code=killed, signal=ILL)
Mem peak: 5.4M
CPU: 606ms
Nov 05 14:41:26 controller01 systemd[1]: Не удалось запустить mariadb.service - сервер баз данных MariaDB 10.11.3.
  • Я также получаю ту же ошибку (ERROR 2002 (HY000)), когда запускаю команды mysql или mariadb.
  • Я пытался вручную установить mariadb, но вывод тот же.
  • Я пробовал mariadb_safe, но socket не создается.

.

Ответ или решение

Ошибка ERROR 2002 (HY000): Can't connect to local server through socket '/var/run/mysqld/mysqld.sock' (2) является распространенной проблемой для пользователей MariaDB, особенно после установки через Ansible, как в вашем случае. Давайте разберем возможные причины возникновения этой ошибки и шаги для её устранения в контексте Debian Trixie.

1. Проверка состояния службы MariaDB

Первым делом необходимо убедиться, что служба MariaDB запущена. Используйте команду:

sudo service mariadb status

В вашем случае вывод указывает на то, что служба не запустилась, и основной PID процесса был убит с сигналом ILL. Это может означать, что служба столкнулась с серьезной ошибкой при запуске. Проверьте журналы:

sudo journalctl -xe

или

sudo cat /var/log/mysql/error.log

Эти журналы могут дать вам более точную информацию о том, что именно пошло не так.

2. Проблемы с конфигурацией

Ошибки в конфигурационных файлах могут предотвратить стартап MariaDB. Убедитесь, что файл конфигурации /etc/mysql/mariadb.conf.d/openstack.cnf настроен корректно. Проверьте наличие таких параметров, как socket, datadir и другие критические настройки.

3. Отслеживание создания сокета

Ошибка может также быть связана с тем, что сокет не создается. Убедитесь, что каталог /var/run/mysqld/ существует. Если его нет, создайте его и установите соответствующие разрешения:

sudo mkdir -p /var/run/mysqld
sudo chown mysql:mysql /var/run/mysqld

После этого попробуйте перезапустить MariaDB:

sudo service mariadb restart

4. Проверка установленных пакетов

Проблема может возникать из-за несовместимых или поврежденных пакетов. Убедитесь, что вы установили MariaDB корректно:

dpkg -l | grep mariadb

Если вы видите неправильные или поврежденные пакеты, попытайтесь переустановить их:

sudo apt-get remove mariadb-server mariadb-client
sudo apt-get install mariadb-server mariadb-client

5. Режим безопасного запуска

Если ни один из вышеописанных шагов не помог, попробуйте запустить MariaDB в безопасном режиме:

sudo mariadb_safe --skip-grant-tables &

Это позволит вам получить доступ к экземпляру MariaDB без проверки привилегий, что может помочь в диагностике проблемы.

6. Удаление временных файлов

Иногда старые временные файлы могут вызывать конфликты. Очистите временные файлы:

sudo rm -rf /var/run/mysqld/*

7. Окончательные шаги

Если проблема сохраняется после всех вышеперечисленных действий, рассмотрите возможность обращения на форумы поддержки MariaDB или Stack Overflow с предоставлением всех собранных вами логов и вывода команд.

Помните, что для успешного развертывания OpenStack, MariaDB должна быть настроена и работать корректно, поэтому уделяйте внимание каждому этапу конфигурации. Надеюсь, эти рекомендации помогут вам решить возникшую проблему.

Оцените материал
Добавить комментарий

Капча загружается...