WP CLI "Ошибка установки соединения с базой данных" в localhost (MAMP)
Я получаю эту ошибку, когда пытаюсь что-то создать с помощью WP CLI:
Error establishing a database connection. This either means that the username and password information in your `wp-config.php` file is incorrect or we can't contact the database server at `localhost`. This could mean your host's database server is down.
/* Ошибка установки соединения с базой данных. Это означает, что либо информация о имени пользователя и пароле в вашем файле `wp-config.php` неверна, либо мы не можем связаться с сервером базы данных по адресу `localhost`. Это может означать, что сервер базы данных вашего хоста не работает. */
Но я могу открыть сайт по ссылке: http://localhost:8888/projectname
Есть идеи?

В MAMP Pro мне также пришлось отметить "Разрешить сетевой доступ к MySQL", чтобы это заработало.

Я попробовал это, но безрезультатно. Я использую шаблон Bedrock. Я перепроверил wp-config и файл .env снова и снова, пересмотрел настройки MAMP снова и снова. Отладил файл wb-db.php.
Затем я убрал символ # из строки DB_HOST в .env, и всё заработало.

@Tom Попробуйте это https://tommcfarlin.com/installing-wp-cli-with-mamp/ перед тем как изменять хост в wp-config.php
. Это должно сработать.

@NickM - Понимаю, что это старый комментарий, но надеюсь, что вы увидите этот ответ. Где находится опция "Разрешить доступ к MySQL из сети"? У меня MAMP Pro 4.4.1, и я не смог найти упомянутую вами настройку. ОБНОВЛЕНИЕ: Нашел её в настройках сервиса MySQL. К сожалению, в моем случае она уже была отмечена, вместе с "только с этого Mac".

Выяснил, что требуется указывать не просто 127.0.0.1
, но и порт, который для MAMP PRO равен 127.0.0.1:8889

Хочу добавить, что в целом это верно, но требуется небольшая корректировка для devKinsta, если вы используете его вместо MAMP. Вы можете найти информацию о хосте базы данных в панели devKinsta и затем внести соответствующие изменения ip:port в wp-config, однако для выполнения wp search-replace нужно будет вернуть оригинальный хост devKinsta, чтобы сайт снова заработал. Возможно, есть лучшее решение, но у меня это работает.

В моём случае решение заключалось в изменении параметра DB_HOST
на 127.0.0.1:8889
вместо localhost
в файле wp-config.php
, а также в активации опции "Разрешить сетевой доступ к MySQL" в настройках MySQL. Определение правильного порта, который использует MAMP Pro для базы данных, стало ключевым недостающим элементом, который я не увидел в других ответах. Ваш опыт может отличаться.

+10 за это. Хотя мне интересно, почему некоторым пользователям нужно указывать порт, а другим нет

Это работает. У меня есть несколько сайтов на WP, настроенных в WP Local, каждый из которых использует свой порт для локального mysql. Также у меня есть не-WP сайты, работающие с отдельным экземпляром mysql на стандартном порту 3306 через MySQL Workbench. Похоже, мой WP CLI пытался подключиться к стандартному порту из MySQL Workbench вместо порта сайта на WP. Поэтому указание порта решило эту проблему для меня.

Убедитесь, что используете PHP бинарник от MAMP. Вы можете проверить, какая версия PHP используется WP CLI, с помощью команды:
php wp-cli.phar --info
Чтобы использовать последнюю версию PHP из MAMP, необходимо изменить ваш bash или zsh профиль:
PHP_VERSION=$(ls /Applications/MAMP/bin/php/ | sort -n | tail -1)
export PATH=/Applications/MAMP/bin/php/${PHP_VERSION}/bin:$PATH
Не забудьте перезагрузить профиль:
source ~/.bash_profile
Убедитесь, что изменения применились корректно:
php wp-cli.phar --info

Первая команда просто выдает ошибку Could not open input file: wp-cli.phar

Да, но в корневой директории WP нет файла wp-cli.phar
.

Здесь вы можете найти больше информации о том, как установить wp-cli.phar: (https://wp-cli.org/)

Шаг 1: проверьте, работает ли ваш сервер MySQL Шаг 2: если да, то вы можете войти в MySQL с помощью команды:
mysql -u root -p
затем введите ваш пароль: (эту команду нужно выполнять из терминала) затем используйте следующие команды, чтобы убедиться, что база данных существует:
show databases;
grant all privileges on database_name.* to 'root'@'localhost' identified by 'password';
flush privileges;
exit;
теперь отредактируйте файл wp-config.php и найдите:
define('DB_NAME', 'db_name');
define('DB_USER', 'root');
define('DB_PASSWORD', 'password');
define('DB_HOST', 'localhost');
Теперь перезапустите сервер и попробуйте войти в админку WordPress. Надеюсь, это поможет.

"mysql -u root -p" выдает ошибку "Access denied for user 'root'@'localhost' (using password: YES)"

при настройке базы данных MySQL вы должны были ввести пароль. Используйте этот пароль. Если вы не настраивали пароль во время установки MySQL, просто нажмите Enter вместо ввода пароля.

Я сделал так, как вы написали. Могу подключиться к базе данных с помощью "mysql -u root -p". Также права предоставлены. Но ошибка все еще присутствует.

Я обнаружил, что если заменить localhost на 127.0.0.1 в wp-config.php, всё начинает работать нормально... Мне кажется, здесь кроется более серьёзная проблема.

В моем случае, помимо упомянутого сообщения об ошибке, я также получил следующие предупреждения:
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
Согласно этому вопросу, эта проблема возникает потому, что кодировка по умолчанию для MySQL 8.0 - utfmb4
.
Фактически, я смог воспроизвести ошибку при обновлении с MySQL 5.7 до MySQL 8.0.
Я решил проблему, экспортировав базу данных, понизив версию до MySQL 5.7 и повторно импортировав данные. Также я провел тесты на MariaDB 10.3, и она работает нормально.

В моем случае мне пришлось сделать то, что предложил eknows в своем решении (https://wordpress.stackexchange.com/a/313862/172520) И, конечно же, разрешить сетевой доступ к MySQL для моего Mac (используя MAMP Pro).
