Со следующим кодом я могу подключиться к mysql: mysql_connect("localhost","username","");
Но если я изменю localhost
на 127.0.0.1
я получаю следующую ошибку:
Не удается подключиться к серверу MySQL на «127.0.0.1» (13)
Почему он не работает с 127.0.0.1?
localhost
– специальная оболочка и использует UNIX-сокеты вместо TCP / IP. 127.0.0.1
не получает этой специальной обработки.
См. Документацию :
В Unix программы MySQL обрабатывают имя хоста localhost специально таким образом, который, вероятно, отличается от ожидаемого по сравнению с другими сетевыми программами. Для соединений с localhost программы MySQL пытаются подключиться к локальному серверу с помощью файла сокета Unix. Это происходит, даже если задана опция -port или -P для указания номера порта. Чтобы клиент установил TCP / IP-соединение с локальным сервером, используйте -host или -h, чтобы указать значение имени узла 127.0.0.1 или IP-адрес или имя локального сервера. Вы также можете указать протокол подключения явно, даже для localhost, с помощью опции –protocol = TCP.
Если он не работает при использовании TCP / IP, база данных, вероятно, не прослушивается в сети. Как правило, это хорошо, так как повышает безопасность (не то, что прослушивание 127.0.0.1 вызывает какие-либо проблемы, но прослушивание всех интерфейсов дает больше возможностей для атак).
Если вы действительно хотите разрешить подключения через сеть, см. Skip-networking .
у вас есть запись в файле хостов, отображающая 127.0.0.7 на localhost?
У вас установлено более 1 сервера mysql в вашей системе? Если да, укажите номер порта сервера mysql, к которому вы пытаетесь получить доступ, например 127.0.0.1:3306,127.0.0.1:8889 и т. Д.
Если вы не знаете, есть ли в вашей системе другие экземпляры сервера mysql, укажите порт.
Вы сможете получить к нему доступ при добавлении привилегий для 'root'@'127.0.0.1'
в таблице "USER_PRIVILEGES"
в базе данных "information_schema"
Вы также можете попробовать отключить SELINUX