Me he encontrado con esto de vez en cuando. La explicación más frecuente es que MySQL Server está configurado para usar un archivo de socket en una ruta, pero php.ini
La sección de mysqli o pdo_mysql está buscando el archivo de socket en otra ruta.
Esto me sucede aunque instalo PHP y MySQL desde MacPorts. Uno pensaría que habrían hecho coincidir las configuraciones para estos dos puertos.
Edite su php.ini
para establecer la ubicación correcta del archivo de socket, o especificar el socket cuando inicie una conexión con mysqli o 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")
Consulte también el artículo que escribí Error2003-CantConnectToMySQLServer .