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