WP CLI "Error al establecer una conexión con la base de datos" en localhost (MAMP)

11 ene 2018, 12:19:04
Vistas: 31.6K
Votos: 32

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?

1
Comentarios

Aquí hay otro error que aparece en la línea de comandos para este caso (al menos en mi situación). Lo agrego con la esperanza de que Google ayude a las personas que lo buscan + "wp-cli": Warning: mysqli_real_connect(): (HY000/2002): No such file or directory in

jerclarke jerclarke
26 jun 2021 20:56:06
Todas las respuestas a la pregunta 8
6
51

Ve a tu archivo wp-config.php y cambia el valor de DB_HOST a 127.0.0.1 en lugar de localhost.

El crédito es para Craig Wayne en los comentarios anteriores.

20 jul 2018 20:13:01
Comentarios

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

Nick M Nick M
22 oct 2018 09:16:51

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 Tom
20 nov 2018 11:45:29

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

Maria Daniel Deepak Maria Daniel Deepak
7 ago 2019 11:35:03

@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".

omega33 omega33
30 oct 2020 05:26:42

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

omega33 omega33
30 oct 2020 05:34:26

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.

jakeatwork jakeatwork
28 abr 2023 14:38:44
Mostrar los 1 comentarios restantes
2
15

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).

1 may 2019 23:41:20
Comentarios

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

Jimmy Long Jimmy Long
7 feb 2024 08:14:46

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í.

Studocwho Studocwho
30 sept 2024 18:00:39
5

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
11 sept 2018 11:15:54
Comentarios

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

Felix Eve Felix Eve
18 sept 2018 11:19:28

¿Ejecutaste el comando en la carpeta raíz de WordPress?

eknows eknows
18 sept 2018 13:16:10

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

Felix Eve Felix Eve
18 sept 2018 13:58:10

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

eknows eknows
20 sept 2018 08:53:45

@FelixEve si durante la instalación moviste wp-cli.phar a /usr/local/bin/wp, puedes ejecutar wp --info en su lugar: el PHP binary que se muestre debería ser el que está en tu instalación de WP.

PJ_Finnegan PJ_Finnegan
7 abr 2019 02:48:29
0

Hay dos partes que deben funcionar juntas:

— Necesitas cambiar de localhost a 127.0.0.1 y agregar el número de puerto al final. En mi caso, fue 127.0.0.1:3306.

El número de puerto se encuentra en el panel de MySQL en Mamp.

Panel de MySQL en Mamp mostrando el número de puerto

14 oct 2019 17:39:52
5

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.

11 ene 2018 12:57:56
Comentarios

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

Klevis Miho Klevis Miho
12 ene 2018 13:14:06

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.

maverick maverick
12 ene 2018 13:29:48

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í.

Klevis Miho Klevis Miho
15 ene 2018 11:42:21

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í

Craig Wayne Craig Wayne
1 jun 2018 10:03:26

Con una instalación limpia de WordPress v3.6.9 y WP-CLI v1.5.1, la solución de @CraigWayne funcionó perfectamente.

betweenbrain betweenbrain
26 jun 2018 18:30:54
0

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.

20 ago 2018 23:50:05
0

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).

26 jul 2019 13:05:24
0

También puedes obtener este error con ciertas operaciones de WP si lo estás utilizando en un multisitio de WordPress, en cuyo caso necesitas especificar una URL, por ejemplo: --url=misitio.org

2 jun 2021 16:16:10