Эта проблема возникала несколько раз при нашей настройке, поэтому я сделал контрольный список.
Это предполагает, что вы хотите, чтобы phpMyAdmin подключался локально к MySQL с помощью сокета UNIX, а не TCP / IP.
Сокеты UNIX должны быть немного быстрее, поскольку они имеют меньше служебных данных и могут быть более безопасными, поскольку к ним можно получить доступ только локально.
Служба
- Служба mysqld работает?
service mysqld status
- .. Если нет
service mysqld start
- Конфигурация изменилась с момента запуска службы?
service mysqld restart
MySQL Config (my.cnf)
- Убедитесь, что нет розеткинабор клиентских протоколов, например,
protocol=tcp
- Убедитесь, что местоположение сокета доступно и имеет необходимые разрешения
PHP Config (php.ini)
Если вы можете подключиться локально из командной строки, но не из phpMyAdmin, а файл сокета не находится в расположении по умолчанию:
- Установите сокеты mysqli по умолчаниюна новое место:
mysqli.default_socket = *location*
- ... Я также установил
pdo_myql.default_socket
и mysql.default_socket
, просто чтобы быть уверенным - Перезапустите ваш веб-сервис (httpd в моем случае)
service httpd restart
phpMyAdmin Config (config.inc.php)
- Убедитесь, что для хоста установлено значение localhost:
$cfg['Servers'][$i]['host'] = 'localhost';
- Здесь также можно указать местоположение гнезда:
$cfg['Servers'][$i]['socket'] = '*location*';
NB
Как указано @CHK ;Установка $cfg['Servers'][$i]['host']
из localhost
в 127.0.0.1
просто заставляет соединение использовать TCP / IP вместо использования сокета и является скорее обходным путем, чем решением.
Настройка MySQL bind-address=
также влияет только на соединения TCP / IP.
Если вам не нужны удаленные подключения, рекомендуется отключить прослушивание TCP / IP с помощью skip-networking
.