При подключении к локальному хосту по умолчанию он пытается использовать не TCP/IP для обслуживания соединения, а UNIX-сокет вместо этого - если ваше соединение не говорит строго, что TCP/IP должен использоваться. Это означает, например, что если у вас есть два экземпляра mysqld на другом порту для localhost, недостаточно просто указать порт, так как тогда mysql попытается подключиться к гнезду.
Пример: у вас есть экземпляр mysql на localhos: 3306 и второй на localhost: 3307. Затем команда:
mysql -uUSER -pPASSWORD -P3307
соединит вас с неверном например 3306, так как он будет использовать сокет по умолчанию, вместо того, чтобы использовать порт. Он может выглядеть как надзор от клиента mysql, но сокет имеет приоритет в этом случае (то есть localhost). Чтобы решить эту проблему, у вас есть два варианта:
Первый вариант - указать сокет напрямую. Это может быть сделано непосредственно с -S
параметром, как:
mysql -uUSER -pPASSWORD -S/path/to/correct/socket
где путь к гнезду для необходимой, например, вы можете увидеть в файле конфигурации. Поскольку у вас есть Mac, возможно, вам даже понадобится создать файл, см. this question для получения дополнительной информации об этом.
Второй вариант: заставить mysql-клиент использовать TCP/IP-соединение. Чтобы достичь этого, вы можете просто указать IP-адрес хоста явно в параметрах подключения:
mysql -uUSER -pPASSWORD -h127.0.0.1 -P3307
Это было бы для 3307
порта. Это, однако, может приводить к ошибке, например:
"Lost connection to MySQL server at 'reading initial communication packet, system error: 0"
Тогда, скорее всего, это означало бы неправильно настроенный экземпляр. Затем вы можете добавить bind-address=127.0.0.1
в свой файл my.cnf
, если его там не было. Опять же, более подробную информацию об этой проблеме можно найти в this question.
Покажите нам свои команды – meda
Подключитесь к локальному хосту на PHP или к серверу MAMP с помощью клиента mysql? –