Ошибка WordPress при установке подключения к базе данных MySQL IIS10

Я пытаюсь настроить WordPress с MySQL на моем локальном компьютере с Windows 10. Я получаю такую ​​ошибку:

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:3307. This could mean your host's database server is down.

Я уже здесь проверял: Ошибка при установлении соединения с базой данных на wordpress

  1. Вы уверены, что у вас правильный логин и пароль?
    Да, я могу войти в SQL Server Workbench с учетными данными root, так что это работает
  2. Вы уверены, что ввели правильное имя хоста?
    Это то, что я пытаюсь сделать ниже
  3. Вы уверены, что сервер базы данных работает?
    Да, проверено в рабочей среде MySQL, и она работает

Я выполнил этот запрос select @@hostname, который дает мне: DESKTOP-CFT2ESY

Я пробовал добавить в wp-config.php (не все одновременно):

define('DB_HOST', 'localhost:3307');
define('DB_HOST', 'localhost:8899');
define('DB_HOST', 'localhost');
define('DB_HOST', 'DESKTOP-CFT2ESY');
define('DB_HOST', '127.0.0.1');

Ничего из этого не работает, он просто изменяет строку имени хоста в приведенном выше сообщении об ошибке.

Затем я добавил:
define('WP_ALLOW_REPAIR', true);
define('DB_CHARSET', 'utf8');

Но это нисколько не меняет сообщения об ошибке.

ОБНОВЛЕНИЕ 1

Я запустил SHOW GLOBAL VARIABLES LIKE 'PORT';, и мой сервер работает на порту 3306. В WorkBench я вижу, что моя база данных работает. Я также добавил все привилегии для пользователя root в мою схему базы данных. Limit to hosts matching моего пользователя настроен на localhost.

ОБНОВЛЕНИЕ 2

Затем я запустил этот PHP-код, который я нашел здесь (я просто изменил пароль пользователя root на пароль моего пользователя root):

<?php

$host = "localhost"; 

$root = "root"; 
$root_password = "rootpass"; 

$user='newuser';
$pass='newpass';
$db = "newdb"; 

    try {
        $dbh = new PDO("mysql:host=$host", $root, $root_password);

        $dbh->exec("CREATE DATABASE `$db`;
                CREATE USER '$user'@'localhost' IDENTIFIED BY '$pass';
                GRANT ALL ON `$db`.* TO '$user'@'localhost';
                FLUSH PRIVILEGES;") 
        or die(print_r($dbh->errorInfo(), true));

    } catch (PDOException $e) {
        die("DB ERROR: ". $e->getMessage());
    }
?>

Но это вызывает ошибку:

DB ERROR: SQLSTATE[HY000] [2054] Server sent charset unknown to the client. Please, report to the developers

ОБНОВЛЕНИЕ 3

Затем я выполнил запрос: SELECT default_character_set_name FROM information_schema.SCHEMATA S WHERE schema_name = "myDB";, который возвращает utf8, то есть тот же набор символов, что и в моем wp-config.php.

ОБНОВЛЕНИЕ 4
Проверил здесь. У меня только что был mysqlrouter.conf.sample в моей папке C:\Program Files\MySQL\MySQL Server 8.0\etc, поэтому я добавил файл my.cnf с:

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

Я перезапустил службу Windows MySQL, но ошибка осталась прежней.

Что еще можно попробовать?

Ваш хост не кажется проблемой ... оставьте это на localhost. Убедитесь, что DB_NAME, DB_USER, DB_PASSWORD правильно определены. Маби типа в одном из них?

Patrick Simard 30.12.2018 17:41

Вы продолжаете перезаписывать их, поэтому действует только последний.

Funk Forty Niner 30.12.2018 17:47

Лол, я почти уверен, что он просто перечислял то, что пробовал

Patrick Simard 30.12.2018 17:49

@PatrickSimard: Я действительно перечислял то, что пробовал :-), я также перепроверил имя / пользователя / пароль и буквально скопировал их в рабочую среду для тестирования, и он там работает, так что никаких опечаток. Что еще это может быть? Я использую MySQL как службу Windows, если это важно.

Adam 31.12.2018 16:26

Вы проверили, работает ли ваша БД, слушает ли сокет, и разрешения пользователя разрешают доступ с любого хоста?

Eriks Klotins 02.01.2019 14:09

@EriksKlotins: Да, см. Обновление 1.

Adam 02.01.2019 14:27

@Flo Удалите порт в DB_HOST. Это не нужно. Кроме того, попробуйте создать простое соединение PHP mysql через pdo или mysqli.

Xatenev 02.01.2019 14:36

Установите для разрешенных хостов значение% (все) и посмотрите, имеет ли это значение. Кроме того, создайте простой автономный файл php для проверки и устранения неполадок подключения к базе данных.

Eriks Klotins 02.01.2019 14:38

@Xatenev: Сейчас я уже тестирую только localhost. У вас есть образец файла PHP, который вы мне порекомендуете? Я мало работаю с MySQL :-). @Eriks: Я пробовал сменить его на %, но это не меняет ошибку.

Adam 02.01.2019 14:49

@Flo stackoverflow.com/a/6549440/3223157 используйте строку new PDO(...). Пример: bpaste.net/show/4cecbad900d3

Xatenev 02.01.2019 14:50

Вы пробовали: define('DB_HOST', '127.0.0.1')?

Bayu 02.01.2019 15:07

Вы пробовали создать ванильный PHP-проект и подключиться к БД с помощью PDO? Просто чтобы увидеть, заканчивается ли это чем-то WP или это что-то среднее между PHP + MySQL?

treyBake 02.01.2019 15:24

@treyBake: это то, что я пробовал при обновлении 2, верно? Если нет: у вас есть пример, который я могу использовать?

Adam 02.01.2019 15:32

@Flo вроде - но вы пытаетесь создать через него базу данных, подключитесь к базе данных и попробуйте выбрать тестовые данные из таблицы

treyBake 02.01.2019 15:32

Пробовал $dbh->exec("SELECT * FROM myDB.wp_terms;") or die(print_r($dbh->errorInfo(), true));, но ошибка остается Server sent charset unknown to the client.

Adam 02.01.2019 15:36

эта помощь: stackoverflow.com/questions/43437490/…?

treyBake 02.01.2019 15:43

Вы все равно можете изменить кодировку по умолчанию, сделав это ALTER DATABASE MyDb CHARACTER SET utf8;

Ulrich Dohou 24.03.2019 00:02
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
9
17
1 979
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Найдите здесь потенциальное решение:

PDO :: __ construct (): сервер отправил кодировку (255), неизвестную клиенту. Сообщите разработчикам

По сути, вы должны убедиться, что и БД, и скрипт используют одну и ту же кодировку, предпочтительно utf-8.

ОБНОВИТЬ: См. Также это: http://php.net/manual/en/mysqli.set-charset.php

Я предлагаю оставить wp в покое и попытаться устранить проблему с помощью автономного скрипта. Вы проверили кодировку подключения к MySQL?

Eriks Klotins 02.01.2019 15:40

Это то, что я пробовал при обновлении 3, верно? Уже написано utf8.

Adam 02.01.2019 15:41

Я не уверен, как именно wp-config обрабатывает кодировки. Вот почему я предложил работать с автономным скриптом, где у вас есть полный контроль. Важно отметить, что кодировка скрипта, кодировка подключения и кодировка БД должны быть одинаковыми, чтобы все работало.

Eriks Klotins 02.01.2019 15:44
Ответ принят как подходящий

Как прокомментировал @treyBake, см. здесь.

В основном MySQL 8 изменил кодировку по умолчанию на utfmb4, и теперь с некоторыми клиентами возникают ошибки. Я перешел на MySQL Server 5.6, и проблема исчезла.

Другие вопросы по теме