Od czasu do czasu wpadam na to. Wyjaśnieniem jest najczęściej, że MySQL Server jest skonfigurowany do używania pliku typu socket w jednej ścieżce, ale php.ini
Sekcja mysqli lub pdo_mysql szuka pliku typu socket w innej ścieżce.
Zdarza mi się to, mimo że instaluję zarówno PHP, jak i MySQL z MacPorts. Można by pomyśleć, że uzgodnili konfiguracje dla tych dwóch portów.
Albo edytuj swój php.ini
aby ustawić poprawną lokalizację pliku gniazda lub określić gniazdo podczas inicjowania połączenia z mysqli lub pdo_mysql.
pdo = new PDO("mysql:dbname=test;unix_socket=/opt/local/var/run/mysql5/mysqld.sock",
"username", "password")
$mysqli = new mysqli("localhost", "username", "password", "test",
ini_get("mysqli.default_port"), "/opt/local/var/run/mysql5/mysqld.sock")
Zobacz także artykuł, który napisałem Error2003-CantConnectToMySQLServer .