php - through - mysqli_connect(): hy000 2002): no such file or directory




Предупреждение: mysql_connect():[2002] Нет такого файла или каталога(попытка подключения через unix:///tmp/mysql.sock) в (11)

Mac OS X EL Capitan + MAMP Pro Сделайте это

cd /var
sudo mkdir mysql
sudo chmod 755 mysql
cd mysql
sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock mysql.sock

Тогда сделайте это

cd /tmp
sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock mysql.sock

Надеюсь, это сэкономит вам время.

Я пытаюсь подключиться к моей базе данных MySQL с помощью терминала на своем Apple (с PHP).

Вчера это сработало хорошо, и теперь я внезапно получил ошибку в названии.

Скрипт работает, когда я использую свой браузер для его запуска (у меня установлен XAMPP), но Terminal отказывается подключиться к БД.

Вот файл, который я включаю для подключения (скрипт работает, когда я не включаю это, но тогда он не подключается к БД):

<?php
    mysql_connect("localhost", "root", "") or die(mysql_error());
    mysql_select_db("FNB1C_data") or die(mysql_error());
?>

Это должно работать, поскольку оно работает с моим браузером.

Команда, которую я использую в терминале, - php scriptname.php .


MySQL-сокет находится, в общем, в /tmp/mysql.sock или /var/mysql/mysql.sock , но, вероятно, PHP выглядит не в том месте.

  1. Проверьте, где находится ваш сокет:

     sudo /usr/libexec/locate.updatedb
    
  2. Когда updateb завершается:

     locate mysql.sock
    
  3. Затем найдите свой php.ini:

     php -i | grep php.ini
    

    это выведет что-то вроде:

     Configuration File (php.ini) Path => /opt/local/etc/php54
     Loaded Configuration File => /opt/local/etc/php54/php.ini
    
  4. Отредактируйте php.ini

     sudo vim /opt/local/etc/php54/php.ini
    
  5. Измените строки:

     pdo_mysql.default_socket=/tmp/mysql.sock
     mysql.default_socket=/tmp/mysql.sock
     mysqli.default_socket = /tmp/mysql.sock
    

    где /tmp/mysql.sock - это путь к вашему сокету.

  6. Сохраните изменения и выйдите из ESC + SHIFT: x

  7. Перезапустить Apache

     sudo apachectl stop
     sudo apachectl start
    

Другим решением является исправление местоположения сокета в файле конфигурации php.ini следующим образом:

pdo_mysql.default_socket=/tmp/mysql.sock

Конечно, символическая ссылка тоже работает, поэтому ее предпочтение отдается тому, что вы меняете.


Исправьте нависшую ошибку сокета 2002 года, которая связывает место, где MySQL помещает сокет и где OSX думает, что это должно быть, MySQL ставит его в / tmp, а OSX ищет его в / var / mysql, сокет - это тип файла, который позволяет клиенту mysql / сервер.

sudo mkdir /var/mysql

а потом

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

источник: http://coolestguidesontheplanet.com/get-apache-mysql-php-phpmyadmin-working-osx-10-10-yosemite/


Когда вы устанавливаете php53-mysql с помощью порта, он возвращает следующее сообщение, которое является решением этой проблемы:

To use mysqlnd with a local MySQL server, edit /opt/local/etc/php53/php.ini
and set mysql.default_socket, mysqli.default_socket and
pdo_mysql.default_socket to the path to your MySQL server's socket file.

For mysql5, use /opt/local/var/run/mysql5/mysqld.sock
For mysql51, use /opt/local/var/run/mysql51/mysqld.sock
For mysql55, use /opt/local/var/run/mysql55/mysqld.sock
For mariadb, use /opt/local/var/run/mariadb/mysqld.sock
For percona, use /opt/local/var/run/percona/mysqld.sock

По какой-то причине mysql на OS X немного локализует требуемый файл сокета, но, к счастью, решение так же просто, как создание символической ссылки.

У вас может быть сокет (отображается как файл с нулевой длиной) как /tmp/mysql.sock или /var/mysql/mysql.sock , но одно или несколько приложений ищут в другом месте для него. Выясните с помощью этой команды:

ls -l /tmp/mysql.sock /var/mysql/mysql.sock

Вместо того, чтобы переместить сокет, отредактируйте файлы конфигурации и не забудьте сохранить отредактированные файлы локально и удаленно от серверов, на которых пути верны, просто создайте символическую ссылку, чтобы ваш Mac нашел нужный сокет, даже если он искал не то место !

Если у вас есть /tmp/mysql.sock но нет /var/mysql/mysql.sock тогда ...

cd /var 
sudo mkdir mysql
sudo chmod 755 mysql
cd mysql
sudo ln -s /tmp/mysql.sock mysql.sock

Если у вас /var/mysql/mysql.sock но нет /tmp/mysql.sock тогда ...

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

Вам понадобятся разрешения для создания каталога и ссылки, поэтому при необходимости предварительно прикрепите команды выше с помощью sudo.


Причина в том, что php не может найти правильный путь mysql.sock .

Убедитесь, что ваш mysql работает в первую очередь.

Затем, пожалуйста, подтвердите, какой путь находится в mysql.sock , например, /tmp/mysql.sock

затем добавьте эту строку пути в php.ini:

  • mysql.default_socket = /tmp/mysql.sock
  • mysqli.default_socket = /tmp/mysql.sock
  • pdo_mysql.default_socket = /tmp/mysql.sock

Наконец, перезапустите Apache.


У меня была такая же проблема, и вот как я ее исправил:

У меня было это, и это не сработало:

$con = mysql_connect('localhost', 'root', '1234');

Я сделал это, и это сработало:

$con = mysql_connect(':/Applications/MAMP/tmp/mysql/mysql.sock', 'root', '1234');

Вместо использования сервера mysql я напрямую подключался к Unix Socket. Работал для меня.


У меня также была эта ошибка, но я мог исправить это только через предложение.

Подводя итог, используйте:

127.0.0.1

Вместо:

localhost

Причина в том, что «localhost» является специальным именем для драйвера MySQL, заставляя его использовать сокет UNIX для подключения к MySQL вместо сокета TCP.


У меня такие же ошибки. Mysql запускался как отдельное приложение, прежде чем я начал phpMyAdmin.

Я просто остановил mysql. Затем sudo / Applications / XAMPP / xamppfiles / xampp stop sudo / Applications / XAMPP / xamppfiles / xampp start

Он отлично работал


у меня была такая же проблема

[PDOException] SQLSTATE [HY000] [2002] Нет такого файла или каталога

[ErrorException] Предупреждение: PDO :: __ construct (): [2002] Нет такого файла или каталога (попытка подключения через unix: ///var/mysql/mysql.sock) в ... htdocs / Symfony / vendor / doctrine-dbal / Библиотека / Doctrine / DBAL / Водитель / PDOConnection.php

Таким образом, решение заключается в создании символической ссылки на файл-носок, что позволяет решить проблему. Для этого выполните следующие действия:

$ sudo mkdir / private / var / mysql /

$ sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /private/var/mysql/mysql.sock

источник: http://www.reecefowell.com/2012/07/21/symfony2-cli-does-not-connect-to-mysql-while-browser-works-fine/





database