WP CLI "Ошибка установки соединения с базой данных" в localhost (MAMP)

11 янв. 2018 г., 12:19:04
Просмотры: 31.6K
Голосов: 32

Я получаю эту ошибку, когда пытаюсь что-то создать с помощью 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

Есть идеи?

1
Комментарии

Вот еще одна ошибка, которая появляется в командной строке при выполнении этой команды (по крайней мере, в моем случае). Добавляю ее в надежде, что Google поможет людям, которые ищут это + "wp-cli": Warning: mysqli_real_connect(): (HY000/2002): No such file or directory in

jerclarke jerclarke
26 июн. 2021 г. 20:56:06
Все ответы на вопрос 8
6
51

Перейдите в ваш файл wp-config.php и измените DB_HOST на 127.0.0.1 вместо localhost.

Идея принадлежит Крейгу Уэйну из комментариев выше.

20 июл. 2018 г. 20:13:01
Комментарии

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

Nick M Nick M
22 окт. 2018 г. 09:16:51

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

Затем я убрал символ # из строки DB_HOST в .env, и всё заработало.

Tom Tom
20 нояб. 2018 г. 11:45:29

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

Maria Daniel Deepak Maria Daniel Deepak
7 авг. 2019 г. 11:35:03

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

omega33 omega33
30 окт. 2020 г. 05:26:42

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

omega33 omega33
30 окт. 2020 г. 05:34:26

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

jakeatwork jakeatwork
28 апр. 2023 г. 14:38:44
Показать остальные 1 комментариев
2
15

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

1 мая 2019 г. 23:41:20
Комментарии

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

Jimmy Long Jimmy Long
7 февр. 2024 г. 08:14:46

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

Studocwho Studocwho
30 сент. 2024 г. 18:00:39
5

Убедитесь, что используете 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
11 сент. 2018 г. 11:15:54
Комментарии

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

Felix Eve Felix Eve
18 сент. 2018 г. 11:19:28

Вы запускали команду в корневой папке WordPress?

eknows eknows
18 сент. 2018 г. 13:16:10

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

Felix Eve Felix Eve
18 сент. 2018 г. 13:58:10

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

eknows eknows
20 сент. 2018 г. 08:53:45

@FelixEve если во время установки вы переместили wp-cli.phar в /usr/local/bin/wp, вы можете выполнить команду wp --info: отображаемый PHP binary должен быть тем, что находится в вашей установке WordPress.

PJ_Finnegan PJ_Finnegan
7 апр. 2019 г. 02:48:29
0

Для того чтобы это работало, необходимо выполнить два шага:

— Вам нужно изменить localhost на 127.0.0.1 и добавить номер порта в конце. В моем случае это был 127.0.0.1:3306.

Номер порта можно найти в панели MySQL в Mamp.

Скриншот панели MySQL в Mamp с указанием порта

14 окт. 2019 г. 17:39:52
5

Шаг 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. Надеюсь, это поможет.

11 янв. 2018 г. 12:57:56
Комментарии

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

Klevis Miho Klevis Miho
12 янв. 2018 г. 13:14:06

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

maverick maverick
12 янв. 2018 г. 13:29:48

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

Klevis Miho Klevis Miho
15 янв. 2018 г. 11:42:21

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

Craig Wayne Craig Wayne
1 июн. 2018 г. 10:03:26

С чистой установкой WordPress v3.6.9 и WP-CLI v1.5.1 решение от @CraigWayne сработало идеально.

betweenbrain betweenbrain
26 июн. 2018 г. 18:30:54
0

В моем случае, помимо упомянутого сообщения об ошибке, я также получил следующие предупреждения:

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, и она работает нормально.

20 авг. 2018 г. 23:50:05
0

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

26 июл. 2019 г. 13:05:24
0

Вы также можете получить эту ошибку при выполнении определенных операций в WordPress, если используете его в мультисайте WordPress. В этом случае вам нужно указать URL, например: --url=mysite.org

2 июн. 2021 г. 16:16:10