WP CLI "Errore nella connessione al database" in localhost (MAMP)
Ricevo questo errore quando provo a creare qualcosa con WP CLI:
Errore nella connessione al database. Questo significa che le informazioni di username e password nel tuo file `wp-config.php` sono errate oppure non riusciamo a contattare il server del database su `localhost`. Potrebbe significare che il server database del tuo host non è attivo.
Ma posso aprire il sito con il link: http://localhost:8888/projectname
Qualche idea?

In MAMP Pro ho anche dovuto selezionare "Consenti accesso alla rete per MySQL" per far funzionare tutto.

Ho provato ma non è servito. Sto usando il boilerplate Bedrock. Ho controllato più volte il file wp-config e .env, ho rivisto più volte le configurazioni di MAMP. Ho eseguito il debug del file wb-db.php.
Poi ho rimosso il # dalla riga DB_HOST nel file .env, e tutto ha funzionato.

@Tom Prova questo https://tommcfarlin.com/installing-wp-cli-with-mamp/ prima di modificare l'host in wp-config.php
. Dovrebbe funzionare.

@NickM - Mi rendo conto che questo è un commento vecchio, ma spero che tu veda questa risposta. Dov'è l'opzione "Consenti accesso di rete a MySQL"? Ho MAMP Pro 4.4.1 e non sono riuscito a trovare questa impostazione che menzioni. AGGIORNAMENTO: L'ho trovata, nel servizio MySQL. Sfortunatamente nel mio caso è già selezionata, insieme a "Solo da questo Mac".

Ho scoperto che richiede non solo 127.0.0.1
ma anche la porta, che per MAMP PRO è 127.0.0.1:8889

Volevo aggiungere qui che questo è generalmente corretto, ma è necessario un piccolo aggiustamento per devKinsta se lo stai usando invece di MAMP. Puoi trovare le informazioni del tuo host del database nel pannello di devKinsta e poi apportare le rispettive modifiche ip:porta nel wp config, ma per eseguire wp search-replace, devi poi tornare all'host originale di devKinsta per far funzionare di nuovo il sito come tale. Potrebbe esserci una soluzione migliore, ma questa sta funzionando per me.

Per me, la soluzione è stata cambiare l'impostazione di DB_HOST
in 127.0.0.1:8889
invece di localhost
nel file wp-config.php
, e anche selezionare la casella per "Consenti l'accesso alla rete a MySQL" nelle impostazioni di MySQL. Impostare la porta corretta che MAMP Pro utilizza per il database è stato il pezzo mancante cruciale che non avevo visto nelle altre risposte qui. I risultati possono variare.

+10 per questo. Però sono curioso del perché alcuni utenti devono aggiungere la porta e altri no

Questo funziona. Ho alcuni siti wp definiti nel software WP Local che usano ciascuno una porta diversa per il mysql localhost, ho anche siti non-wp in esecuzione su un'istanza mysql separata in esecuzione sulla porta predefinita 3306 tramite MySQL Workbench. Il mio WP CLI probabilmente stava cercando di accedere alla porta predefinita da MySQL Workbench invece che alla porta del sito wp. Quindi aggiungere la porta risolve questo problema per me.

Assicurati di utilizzare il binario PHP di MAMP. Puoi verificare quale versione di PHP sta utilizzando WP CLI con:
php wp-cli.phar --info
Per utilizzare l'ultima versione di PHP di MAMP devi modificare il tuo profilo bash o zsh:
PHP_VERSION=$(ls /Applications/MAMP/bin/php/ | sort -n | tail -1)
export PATH=/Applications/MAMP/bin/php/${PHP_VERSION}/bin:$PATH
Assicurati di ricaricare il profilo:
source ~/.bash_profile
Verifica che le modifiche siano state applicate correttamente:
php wp-cli.phar --info

Quel primo comando restituisce solo l'errore Could not open input file: wp-cli.phar

Sì, ma non c'è alcun file wp-cli.phar
nella root della directory WP.

Qui puoi trovare maggiori informazioni su come installare wp-cli.phar: (https://wp-cli.org/)

Passo 1: verifica se il tuo server MySQL è in esecuzione Passo 2: se sì, puoi accedere a MySQL utilizzando
mysql -u root -p
quindi inserisci la tua password: (devi usare questo comando dal terminale) quindi usa il seguente comando per assicurarti che il database esista:
show databases;
grant all privileges on database_name.* to 'root'@'localhost' identified by 'password';
flush privileges;
exit;
ora modifica il file wp-config.php e cerca
define('DB_NAME', 'db_name');
define('DB_USER', 'root');
define('DB_PASSWORD', 'password');
define('DB_HOST', 'localhost');
Ora riavvia il server e prova ad accedere alla tua dashboard WordPress. Spero che ti aiuti.

"mysql -u root -p" mi dà "Access denied for user 'root'@'localhost' (using password: YES)"

quando hai configurato il tuo database mysql, devi aver inserito una password. Usa quella password. Se non hai configurato alcuna password al momento dell'installazione del database mysql, premi semplicemente invio invece di inserire una password.

Ho fatto quello che hai scritto. Riesco a connettermi al database con "mysql -u root -p". Inoltre i privilegi sono stati concessi. Ma l'errore è ancora presente.

Ho scoperto che se cambio localhost con 127.0.0.1 nel mio wp-config.php, tutto funziona bene... sento che c'è un problema più grande qui

Nel mio caso, oltre al messaggio di errore menzionato in precedenza, ho ricevuto anche i seguenti avvisi:
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
Secondo questa domanda, questo problema si verifica perché il charset predefinito per MySQL 8.0 è utfmb4
.
Infatti, ho potuto replicare l'errore aggiornando da MySQL 5.7 a MySQL 8.0
Ho risolto il problema esportando il database, tornando a MySQL 5.7 e reimportando i dati. Ho anche eseguito test su MariaDB 10.3 e funziona correttamente.

Nel mio caso, ho dovuto fare ciò che eknows ha proposto nella sua soluzione (https://wordpress.stackexchange.com/a/313862/172520) E ovviamente abilitare l'accesso alla rete per MySQL sul mio Mac (usando MAMP Pro).
