2014-11-08 3 views
1

В моем Mac есть некоторые проблемы. Одна из проблем заключается в том, что установлены два экземпляра MySQL. Первый mysql выполняется на localhost, а второй - в MAMP. Из-за этого, когда я пытался подключиться к mysql, используя php:Как подключить другой MySQL к терминальному ПК?

... он подключен к экземпляру MAMP.

И когда я попытался подключиться к MySQL с помощью терминала, он подключен к экземпляру localhost. Поэтому я не могу делать то, что хочу ... Когда я создаю базу данных с именем «dbname» и пытаюсь подключиться к ней из моего html, она генерирует ошибку: mysqli_connect(): (42000/1049): Неизвестная база данных «dbname '

Что мне делать, чтобы заставить его работать?

+0

Покажите нам свои команды – meda

+0

Подключитесь к локальному хосту на PHP или к серверу MAMP с помощью клиента mysql? –

ответ

1

При подключении к локальному хосту по умолчанию он пытается использовать не 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.

Смежные вопросы