Подтвердить что ты не робот

MySQL работает с 127.0.0.1, но не работает с localhost?

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

   127.0.0.1       localhost

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

Ответ 3

Для macs, здесь решение:

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

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/

Ответ 4

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

Ответ 5

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

Ответ 6

Try:

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

Ответ 7

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

Ответ 8

Локальный хост разрешает адрес IPv6, в отличие от IPv4, а MySQL не прослушивает адрес v4?

Решение - сделать localhost решением для адреса v4, или заставить MySQL прослушивать адрес v6.

Ответ 9

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

Настроить tcp с помощью клиента mysql

mysql -usomeone -p --protocol=TCP

против. socket (по умолчанию для linux)

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

Последний не работал для моего [email protected]