У меня странная проблема в php MySQL:
php соединяется с 127.0.0.1
но не с localhost
.
Как решить эту проблему?
localhost должен быть определен в вашем файле hosts, который по умолчанию используется для Windows и большинства ОС.
Проверьте следующий текстовый файл и посмотрите, что происходит:
C:\WINDOWS\system32\drivers\etc\hosts
Обратите внимание, что «хосты» – это файл, без расширения, это не папка. Этот файл должен быть довольно пустым, если вы видите записи, ваш блокиратор AV / спама добавил тонну записей, указывающих на 127.0.0.1, или неприятные вредоносные программы написали мусор там, несмотря на то, что новые записи ниже старых. Localhost должен быть первой записью в этом файле.
Попробуйте выполнить ping localhost
в командной строке, это может быть разрешение на ::1:
эквивалент IP6 для 127.0.0.1
Чтобы исправить это, добавьте (или раскомментируйте) строку:
127.0.0.1 localhost
в C:\WINDOWS\system32\drivers\etc\hosts
Также загляните в базу данных mysql, которая определяет привилегии доступа пользователя. Вы можете определить там, из каких источников хост-провайдеру разрешен доступ к данному пользователю. Для получения дополнительной информации вы можете обратиться к http://dev.mysql.com/doc/refman/5.1/en/connection-access.html.
Я помню, что это давняя и документированная функция Mysql для Windows. Что-то о том, как работают локальные сокеты.
Для macs, вот решение:
Подключитесь к 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 и 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/
Пытаться:
IE -> Инструменты -> Параметры -> Соединение -> Настройки локальной сети Проверьте прокси-сервер обхода для локальных адресов
Если MySQL подключается к 127.0.0.1, он делает это через TCP / IP, тогда как если он подключается к localhost, он делает это через сокет.
Является ли PHP в нужном месте для mysql.sock? Убедитесь, что php.ini и my.conf имеют соответствующие местоположения
Является ли localhost решением для IPv6-адреса, в отличие от IPv4, а MySQL не прослушивает адрес v4?
Решение заключается в том, чтобы localhost разрешить адрес v4, или заставить MySQL прослушивать адрес v6.
Если вы не на окнах также проверяете, подключается ли mysql через сокет, локально он обычно работает.
Принудительный tcp с клиентом mysql
mysql -usomeone -p --protocol=TCP
vs. socket (по умолчанию для linux)
mysql -usomeone -p mysql -usomeone -p --protocol=socket
Последний не работал для моего someone@127.0.0.1