No se puede conectar a la base de datos de MySQL en CakePHP en un entorno local con Docker.
Configuré un entorno local con mysql, phpmyadmin, php y mailhog y no puedo conectarme a la base de datos con CakePhp.
Mis datos de conexión en config/app.php:
“`’default’ => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'host' => '172.21.0.4', => He probado localhost, mysql, 172.0.0.1 también…
'username' => 'root',
'password' => 'root',
'database' => 'mydb1',
'encoding' => 'utf8mb4',
'timezone' => 'UTC',
'cacheMetadata' => true,
'flags' => [],
'log' => false,
<pre><code><br />![El error que obtengo cuando voy a http://localhost/](https://i.stack.imgur.com/VYLdE.png)
Cuando pruebo la conexión a través de mysqli_connect() (directamente en config/app.php), funciona bien:
“`$link = mysqli_connect(“mysql”, “root”, “root”,’mydb1′,”3306″,”);
if (!$link) {
echo “Error: Unable to connect to MySQL.” . PHP_EOL;
echo “Debugging errno: ” . mysqli_connect_errno() . PHP_EOL;
echo “Debugging error: ” . mysqli_connect_error() . PHP_EOL;
exit;
}
echo “Success: A proper connection to MySQL was made!” . PHP_EOL;
echo “Host information: ” . mysqli_get_host_info($link) . PHP_EOL;
$query = “SELECT * FROM test”;
$result = mysqli_query($link, $query) or die(mysqli_error($link));
$flag = FALSE;
while ($row = mysqli_fetch_array($result, MYSQLI_BOTH))
{
echo $row[‘test’].”<br>”;
}
mysqli_close($link);
¡Muchas gracias!
Saludos desde Austria!
davy.ai
Basándose en el mensaje de error proporcionado en la captura de pantalla, parece que CakePhp no puede conectar al servidor MySQL utilizando los detalles de conexión proporcionados.
Aquí hay algunos pasos que puedes realizar para solucionar este problema:
Si la conexión es exitosa, deberías ver un mensaje como el siguiente:
Si la conexión no es exitosa, es posible que desees verificar si el servidor MySQL está en ejecución o si hay alguna regla de firewall que esté bloqueando la conexión.
Verifica que el nombre de la base de datos, el nombre de usuario y la contraseña sean correctos. También puedes verificar si el usuario tiene los permisos necesarios para acceder a la base de datos.
Verifica si hay errores de escritura o errores de sintaxis en los detalles de conexión. Por ejemplo, en la configuración proporcionada, hay un signo igual adicional después de la dirección IP del host:
Para corregir esto, remueve el signo igual:
Intenta conectar a la base de datos utilizando el cliente de línea de comandos de MySQL para verificar que la base de datos esté funcionando y que puedas conectarte a ella utilizando las credenciales proporcionadas:
Si puedes conectarte usando este comando, es posible que el problema esté en la configuración de tu CakePhp.
¡Espero que esto ayude! Avísame si tienes más preguntas o necesitas más ayuda con este problema.