Не удается подключиться к сокету после обновления с maraidab 10.2.29 -> 10.3.31 в SuSE SLES 12

Две недели назад SuSE обновила пакеты для SuSE Linux Enterprise Server (SLES) для mariaDB с 10.2.29-3.22.1 до 10.2.31-3.25.1. Это незначительное обновление разорвало соединения с базой данных на моем производственном сервере SLES 12SP4, а также на моем сервере разработки SLES12SP5.

В этом обновлении возникла проблема с соединениями сокетов: до сих пор я объявлял сокет в my.cnf с socket = /var/lib/mysql/mysql.sock для группы [client] и [mysqld], которая была расположением по умолчанию на SLES11 и работала безупречно.

Это поведение изменилось после обновления: когда мои php-приложения drupal теперь пытаются подключиться к этому сокету, они выдают только PDOException: SQLSTATE[HY000] [2006] MySQL server has gone away in lock_may_be_available() (. Если я назову systemctl status mysql.service, это мой терминал, он сообщит мне, что mysqld[pid]: refused connect from IP.

К счастью, я понял, что моя производственная машина работает со значением по умолчанию socket = /run/mysql/mysql.sock. Мое предположение заключалось в том, что новая версия mariaDB не принимает символические ссылки, поскольку /var/lib/mysql находится на другом томе и интегрирована символической ссылкой в ​​мою настройку.

Но моя машина для разработки также отказывается от этого решения, я не могу снова заставить базу данных работать. Основное различие между prod и dev заключается в том, что я уже перевел dev на пакет обновления 5, поэтому я не решаюсь обновить свою производственную среду с SP4 до SP5.

  • Это не проблема брандмауэра, так как она не меняется после выключения брандмауэра.
  • bind-address = 127.0.0.1 который также настроен в настройках друпала как host
  • Я изменил каталог сокета на /tmp/mysql.sock, так как он должен быть доступен из любого места безрезультатно.
  • Права доступа к файлу srwxrwxrwx 1 mysql mysql 0 13. Mär 11:59 mysql.sock=
  • netstat -ln | grep mysql возвращает unix 2 [ ACC ] STREAM LISTEN 670834 /tmp/mysql.sock
  • systemctl status mysql.service возвращает mariadb.service - MySQL server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled) Active: active (running) since Fr 2020-03-13 11:59:54 CET; 3h 2min ago Main PID: 12393 (mysqld) Status: "Taking your SQL requests now..." Tasks: 30 (limit: 512) CGroup: /system.slice/mariadb.service └─12393 /usr/sbin/mysqld --defaults-file=/etc/my.cnf --user=mysql

В журнале изменений mariaDB нет никаких доказательств того, что что-то связано с обработкой сокетов.

Кто-нибудь сталкивался с такой же проблемой? Или есть идеи, как я могу это исправить? К сожалению, я не специалист по базам данных...

Спасибо,

Роб


person RobUM    schedule 13.03.2020    source источник


Ответы (1)


Я нашел решение: MariaDB 10.2.31-3.25.1. на SLES начинает использовать /etc/hosts.allow, настроенный по-другому — гораздо более ограниченный на моем разработчике, чем на моем рабочем сервере. Поэтому клиент не смог подключиться к серверу базы данных.

Интересно, где было введено это другое поведение - я ничего не нашел в журналах изменений mariaDB...

person RobUM    schedule 17.03.2020