Я пытаюсь настроить WordPress с MySQL на моем локальном компьютере с Windows 10.
Я получаю эту ошибку:
Ошибка при установлении соединения с базой данных
Это либо означает, что имя пользователя и пароль в вашем файле wp-config.php неверны, либо мы не можем связаться с сервером базы данных по адресу localhost: 3307. Это может означать, что сервер базы данных вашего хоста не работает.
Я уже проверил здесь: Ошибка при установлении соединения с базой данных на WordPress
root
учетные данные, так что работаетЯ выполнил этот запрос 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());
}
?>
Но это вызывает ошибку:
ОШИБКА БД: SQLSTATE [HY000] [2054] Сервер отправил кодировку, неизвестную клиенту. Пожалуйста, сообщите разработчикам
ОБНОВЛЕНИЕ 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, но ошибка остается той же.
Что еще я могу попробовать?
Как прокомментировал @treyBake, пожалуйста, смотрите Вот.
В основном MySQL 8 изменил кодировку по умолчанию на utfmb4, и теперь есть ошибки с некоторыми клиентами. Я опустился до MySQL Server 5.6 и проблема исчезла.
Посмотрите здесь для потенциального решения:
По сути, вы должны убедиться, что и БД, и скрипт используют одну и ту же кодировку, предпочтительно utf-8
ОБНОВИТЬ:
Смотрите также это:http://php.net/manual/en/mysqli.set-charset.php