Проблема с MySQL localhost / 127.0.0.1

У меня есть локальный веб-сервер, работающий на моем macbook, и я столкнулся с какой-то странной проблемой. Я могу получить доступ к MySQL просто отлично, используя программу, такую ​​как Sequel Pro, работа с паролями и жизнь отличная.

В PHP, если у меня есть сервер db 127.0.0.1, все работает.

Однако, если я изменю сервер db на localhost, я получаю доступ к ошибкам «root» @ «localhost». Я убедился, что сокет MySQL настроен правильно, но по-прежнему не может использовать localhost.

Любое понимание было бы удивительным. Благодаря!

Кроме слов Майкла,

есть еще одна ссылка: http://dev.mysql.com/doc/refman/5.1/en/connecting.html , она гласит:

В Unix программы MySQL обрабатывают имя хоста localhost специально таким образом, который, вероятно, отличается от ожидаемого по сравнению с другими сетевыми программами. Для соединений с localhost программы MySQL пытаются подключиться к локальному серверу с помощью файла сокета Unix. Это происходит, даже если задана опция -port или -P для указания номера порта.

это не типичное соединение tcp / ip. если u имеет локальную переадресацию портов с 127.0.0.1:3306 до 192.168.1.2:3306, «mysql -h localhost» попытается подключиться к локальному файлу сокета unix.

это не относится к вашему вопросу (поскольку у вас работает php), но надеюсь, что это все равно поможет.

Отсюда .

Задайте начальный пароль для пользователя root на localhost.

УСТАНОВИТЬ ПАРОЛЬ ДЛЯ root @ localhost = PASSWORD ('new_password'); ПРИВИЛЕГИИ ФЛЮЗА;

В файле my.cnf измените свой адрес привязки на localhost или полностью удалите настройку привязки (что сделает mysql прослушивание всех IP-адресов).

Файл my.cnf обычно находится в / etc или / etc / mysql.

Это то, что исправило это для меня. PHP.INI по умолчанию использует другое местоположение, чем MySQL для сокета по умолчанию. Чтобы исправить, просто запустите эти две команды, чтобы добавить псевдоним (не требуется перезагрузка):

mkdir /var/mysql ln -s /tmp/mysql.sock /var/mysql/mysql.sock 

Источник