MySQL работает с 127.0.0.1, но не работает с localhost? - PullRequest
12 голосов
/ 17 февраля 2010

У меня странная проблема в php MySQL:

php соединяется с 127.0.0.1, но не с localhost.

Как решить эту проблему?

Ответы [ 9 ]

8 голосов
/ 17 февраля 2010

Попробуйте ping localhost в командной строке, возможно, оно разрешается до ::1:, IP6 эквивалентен 127.0.0.1

Чтобы исправить это, добавьте (или раскомментируйте) строку:

   127.0.0.1       localhost

в C:\WINDOWS\system32\drivers\etc\hosts

5 голосов
/ 17 февраля 2010

localhost должен быть определен в вашем файле hosts, который по умолчанию используется в Windows и большинстве ОС.

Проверьте следующий текстовый файл и посмотрите, что случилось:

C:\WINDOWS\system32\drivers\etc\hosts

Обратите внимание, что "hosts" - это файл, без расширения, это не папка. Этот файл должен быть практически пустым, если вы видите записи, либо ваш AV / блокировщик спама добавил тонну записей, которые указывают на 127.0.0.1, либо вредоносное вредоносное ПО добавило туда мусор, несмотря на то, что новые записи ниже старых. Localhost должен быть первой записью в этом файле.

3 голосов
/ 24 октября 2013

Для Mac, вот решение:

Подключитесь к MySQL, используя localhost вместо 127.0.0.1 на MAC. В течение долгого времени я подключался к MySQL на моей платформе разработки с 127.0.0.1, потому что по какой-то причине localhost не работал. Оказывается, это потому, что 127.0.0.1 использует TCP / IP, а localhost использует сокеты. Файл php.ini указывает на неправильное место для mysql.sock, поэтому все, что вам нужно сделать, это изменить его, перезапустить apache и вуаля!

Open php.ini: /private/etc/php.ini
Find the following line: mysql.default_socket = /var/mysql/mysql.sock
Replace with: mysql.default_socket = /tmp/mysql.sock
Restart apache: apachectl restart

Примечание. В зависимости от настроек может потребоваться обновить следующие строки в php.ini:

mysqli.default_socket = /tmp/mysql.sock
pdo_mysql.default_socket = /tmp/mysql.sock

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

.
sudo cp /private/etc/php.ini.default /private/etc/php.ini

через http://madproject.com/general/connect-to-mysql-using-localhost-instead-of-127-0-0-1-on-a-mac/

2 голосов
/ 17 февраля 2010

Я помню, что это давняя и задокументированная функция Mysql для Windows. Что-то о том, как работают локальные сокеты или что-то в этом роде.

2 голосов
/ 17 февраля 2010

Также загляните в базу данных mysql, которая определяет права доступа пользователя. Вы можете определить, с каких исходных хостов данному пользователю разрешено подключаться. Вы можете проконсультироваться http://dev.mysql.com/doc/refman/5.1/en/connection-access.html для более подробной информации

1 голос
/ 17 февраля 2010

Если MySQL подключается к 127.0.0.1, он делает это через TCP / IP, тогда как если он подключается к localhost, он делает это через сокет.
PHP ищет правильное место для mysql.sock? Убедитесь, что php.ini и my.conf имеют совпадающие местоположения

1 голос
/ 17 февраля 2010

Попробуйте:

IE -> Сервис -> Параметры -> Соединение -> Параметры локальной сети Проверка обходного прокси для локальных адресов

0 голосов
/ 18 июля 2014

Если вы не в Windows, также проверьте, подключается ли mysql через сокет, локально это обычно происходит.

Принудительно установить TCP с клиентом mysql

mysql -usomeone -p --protocol=TCP

против. сокет (по умолчанию в linux)

mysql -usomeone -p 
mysql -usomeone -p --protocol=socket

Последний не работал для моего someone@127.0.0.1

0 голосов
/ 17 февраля 2010

Преобразуется ли localhost в адрес IPv6, в отличие от IPv4, а MySQL не прослушивает адрес v4?

Решение состоит в том, чтобы сделать локальный хост разрешенным по адресу v4, ИЛИ заставить MySQL прослушивать адрес v6.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...