Eu encontrei outro motivo pelo qual você pode receber esse erro. Você precisa atender as seguintes condições
- Use o driver nativo do MySQL para PHP (recomendado)
- Use o MySQL 5.6 ou posterior
- Use um certificado SSL autoassinado para comunicação do MySQL
Como descrito em este bug do PHP , o MySQLND irá obedecer às preferências do MySQL e tentar validar o Certificado SSL. Como não pode (ser auto-assinado) a conexão simplesmente falha com um erro de 2002 (bom e vago!)
Como observado no bug, o PHP 5.6.16 (também presente no 7.0+) adicionou outra opção de conexão ao mysqli_real_connect
chamado MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT
, que desabilita a validação dos certificados SSL no lado do MySQLND. Para versões anteriores ao PMA 4.6.0 você terá que editar libraries/dbi/DBIMysqli.php
e editar a linha com
$client_flags |= MYSQLI_CLIENT_SSL;
E substitua por (SOMENTE PARA PHP 5.6.16 ou posterior)
$client_flags |= MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT;
Para o PMA 4.6.0 ou posterior, você pode simplesmente definir na configuração
$cfg['Servers'][$i]['ssl_verify'] = false;