Вопрос или проблема
Я понимаю, что это распространенная проблема, но ни один из других постов не помог решить нашу проблему (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 должна быть настроена и работать корректно, поэтому уделяйте внимание каждому этапу конфигурации. Надеюсь, эти рекомендации помогут вам решить возникшую проблему.