Назад | Перейти на главную страницу

Centos 6; phpMyAdmin 'Невозможно войти на сервер MySQL' после перемещения mysql.sock

Я недавно переместил свой mysql datadir из /var/lib/mysql в новый каталог /home/mysql установлен на новом жестком диске.

Для наглядности подумал, что неплохо было бы разместить tmpdir и socket на этом новом жестком диске.

Все работает по плану, пока не переместил файл сокета. Перемещение файла сокета предотвращает вход phpMyAdmin; Я могу нормально войти в систему из командной строки и с помощью своего веб-фреймворка, но не с помощью phpMyAdmin.

Единственная разница между рабочей конфигурацией и не в моей my.cnf файл..

Работает:

[mysqld]
socket = /var/lib/mysql/mysql.sock 

...

[client]
socket = /var/lib/mysql/mysql.sock

Не:

[mysqld]
socket = /home/mysql/mysql.sock 

...

[client]
socket = /home/mysql/mysql.sock

Предполагая, что это ошибка разрешений, я проверил пути к каждому местоположению:

drwxr-xr-x. root  root  var
drwxr-xr-x. root  root  lib
drwxr-xr-x  mysql mysql mysql
srwxrwxrwx  mysql mysql mysql.sock

drwxr-xr-x. root  root  home
drwxr-xr-x  mysql mysql mysql
srwxrwxrwx  mysql mysql mysql.sock

так что я предполагаю, что они в порядке. Я ошибся?

Я phpMyAdmin настроен на использование 'localhost' У меня есть mysql bind-address параметр установлен на IP-адрес нашей локальной сети для сервера (192.168.etc.)

Я также перезапустил оба httpd и mysqld серверов при тестировании нового конфига.

Я вполне счастлив оставить файл сокета там, где он есть, при условии, что это не проблема безопасности / производительности, но хотелось бы знать, что происходит, если кто-нибудь может помочь пролить свет!

Если вы не используете встроенное расположение по умолчанию, PHP также необходимо явно настроить с указанием расположения файла сокета MySQL в файле php.ini или в строке подключения ...

pdo_mysql.default_socket= /home/mysql/mysql.sock

или в зависимости от вашего выбора API

mysqli.default_socket= /home/mysql/mysql.sock

Так как Ибеннет предложил в своем комментарии выше, установив путь сокета к новому местоположению woks. В моем случае настройка по умолчанию для типа подключения была 'tcp'. Это также необходимо изменить на 'разъем'.

Таким образом, две строки, которые необходимо изменить в config.in.php файлы:

$cfg['Servers'][$i]['socket'] = '/home/mysql/mysql.sock';
$cfg['Servers'][$i]['connect_type'] = 'socket';

Не пытайтесь перезапустить httpd:

systemctl restart httpd