WP CLI "Error al establecer una conexión con la base de datos" en localhost (MAMP)
Obtengo este error cuando intento crear algo con WP CLI:
Error al establecer una conexión con la base de datos. Esto significa que la información de usuario y contraseña en tu archivo `wp-config.php` es incorrecta o no podemos contactar con el servidor de base de datos en `localhost`. Esto podría significar que el servidor de base de datos de tu host está caído.
Pero puedo abrir el sitio con el enlace: http://localhost:8888/projectname
¿Alguna idea?

En MAMP Pro también tuve que marcar "Permitir acceso de red a MySQL" para que esto funcione.

Probé esto pero no ayudó. Estoy usando el boilerplate Bedrock. Revisé el archivo wp-config y el .env una y otra vez, revisé las configuraciones de MAMP repetidamente. Depuré el archivo wb-db.php.
Luego quité el # de la línea DB_HOST en el archivo .env, y todo funciona bien.

@Tom Prueba esto https://tommcfarlin.com/installing-wp-cli-with-mamp/ antes de cambiar el host en wp-config.php
. Debería funcionar.

@NickM - Me doy cuenta que este es un comentario antiguo, pero espero que veas esta respuesta. ¿Dónde se encuentra la opción "Permitir acceso de red a MySQL"? Tengo MAMP Pro 4.4.1 y no he podido encontrar esta configuración que mencionas. ACTUALIZACIÓN: La encontré, en el servicio MySQL. Desafortunadamente en mi caso ya está marcada, junto con "solo desde esta Mac".

Descubrí que no solo requiere 127.0.0.1
sino también el puerto, que para MAMP PRO es 127.0.0.1:8889

Quería agregar aquí que esto es generalmente correcto, pero se necesita un pequeño ajuste para devKinsta si lo estás ejecutando en lugar de MAMP. Puedes encontrar la información del host de la base de datos en el panel de devKinsta y luego hacer los cambios respectivos de ip:puerto en wp config para ejecutar wp search-replace, pero luego necesitas volver al host original de devKinsta para que funcione como sitio nuevamente. Podría haber una mejor solución, pero esa me está funcionando.

Para mí, la solución fue cambiar la configuración de DB_HOST
a 127.0.0.1:8889
en lugar de localhost
en el archivo wp-config.php
, y también marcar la casilla para "Permitir acceso de red a MySQL" en la configuración de MySQL. Establecer el puerto al que MAMP Pro está utilizando para la base de datos fue la pieza crítica que faltaba y que no vi en las otras respuestas aquí. Tus resultados pueden variar (YMMV).

+10 por esto. Aunque me pregunto por qué algunos usuarios necesitan agregar el puerto y otros no.

Esto funciona. Tengo algunos sitios de WordPress definidos en el software WP Local que utilizan un puerto diferente para el localhost de MySQL, también tengo sitios que no son de WP ejecutándose en una instancia separada de MySQL que usa el puerto predeterminado 3306 a través de MySQL Workbench. Mi WP CLI debió estar intentando acceder al puerto predeterminado de MySQL Workbench en lugar del puerto del sitio de WP. Así que agregar el puerto soluciona este problema para mí.

Asegúrate de usar el binario de PHP de MAMP. Puedes verificar qué versión de PHP está ejecutando WP CLI con:
php wp-cli.phar --info
Para usar la última versión de PHP de MAMP, necesitas modificar tu perfil de bash o zsh:
PHP_VERSION=$(ls /Applications/MAMP/bin/php/ | sort -n | tail -1)
export PATH=/Applications/MAMP/bin/php/${PHP_VERSION}/bin:$PATH
Asegúrate de recargar el perfil:
source ~/.bash_profile
Verifica que los cambios se hayan aplicado correctamente:
php wp-cli.phar --info

Ese primer comando solo da el error Could not open input file: wp-cli.phar

Sí, pero no hay ningún archivo wp-cli.phar
en la raíz del directorio de WP.

Aquí puedes encontrar más información sobre cómo instalar el wp-cli.phar: (https://wp-cli.org/)

Paso 1: Verifica si tu servidor MySQL está en ejecución Paso 2: Si está en ejecución, puedes iniciar sesión en MySQL usando
mysql -u root -p
luego ingresa tu contraseña: (debes usar este comando desde la terminal) después usa el siguiente comando para asegurarte que la base de datos existe:
show databases;
grant all privileges on database_name.* to 'root'@'localhost' identified by 'password';
flush privileges;
exit;
ahora edita el archivo wp-config.php y busca
define('DB_NAME', 'db_name');
define('DB_USER', 'root');
define('DB_PASSWORD', 'password');
define('DB_HOST', 'localhost');
Ahora reinicia el servidor e intenta iniciar sesión en tu panel de control de WordPress. Espero que esto ayude.

"mysql -u root -p" me da "Acceso denegado para el usuario 'root'@'localhost' (usando contraseña: SÍ)"

cuando configuraste tu base de datos mysql, debiste haber ingresado una contraseña. Usa esa contraseña. Si no configuraste una contraseña al momento de configurar la base de datos mysql, simplemente presiona enter en lugar de ingresar cualquier contraseña.

Hice lo que escribiste. Puedo conectarme a la base de datos con "mysql -u root -p". También los privilegios están otorgados. Pero el error sigue ahí.

Descubrí que si cambio localhost por 127.0.0.1 en mi wp-config.php, todo funciona bien... siento que hay un problema más grande aquí

En mi caso, además del mensaje de error mencionado anteriormente, también recibí las siguientes advertencias:
PHP Warning: mysqli_real_connect(): Server sent charset (255) unknown to the client. Please, report to the developers in /var/www/html/wp-includes/wp-db.php on line 1531
Warning: mysqli_real_connect(): Server sent charset (255) unknown to the client. Please, report to the developers in /var/www/html/wp-includes/wp-db.php on line 1531
PHP Warning: mysqli_real_connect(): (HY000/2054): Server sent charset unknown to the client. Please, report to the developers in /var/www/html/wp-includes/wp-db.php on line 1531
Warning: mysqli_real_connect(): (HY000/2054): Server sent charset unknown to the client. Please, report to the developers in /var/www/html/wp-includes/wp-db.php on line 1531
PHP Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /var/www/html/wp-includes/wp-db.php on line 1562
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /var/www/html/wp-includes/wp-db.php on line 1562
PHP Warning: mysql_connect(): Server sent charset (255) unknown to the client. Please, report to the developers in /var/www/html/wp-includes/wp-db.php on line 1562
Warning: mysql_connect(): Server sent charset (255) unknown to the client. Please, report to the developers in /var/www/html/wp-includes/wp-db.php on line 1562
PHP Warning: mysql_connect(): Server sent charset unknown to the client. Please, report to the developers in /var/www/html/wp-includes/wp-db.php on line 1562
Warning: mysql_connect(): Server sent charset unknown to the client. Please, report to the developers in /var/www/html/wp-includes/wp-db.php on line 1562
Según esta pregunta, este problema ocurre porque el charset predeterminado para MySQL 8.0 es utfmb4
.
De hecho, pude replicar el error al actualizar de MySQL 5.7 a MySQL 8.0.
Solucioné el problema exportando la base de datos, volviendo a MySQL 5.7 y reimportando los datos. También realicé pruebas con MariaDB 10.3 y funciona correctamente.

En mi caso, tuve que hacer lo que eknows propuso en su solución (https://wordpress.stackexchange.com/a/313862/172520) Y por supuesto habilitando el acceso de red a MySQL para mi Mac (usando MAMP Pro).
