programing

MySQL 데이터베이스 연결 IIS10을 설정하는 동안 WordPress 오류 발생

bestprogram 2023. 3. 23. 23:13

MySQL 데이터베이스 연결 IIS10을 설정하는 동안 WordPress 오류 발생

로컬 Windows 10 머신에 WordPress with MySQL을 설정하려고 합니다.다음 오류가 나타납니다.

데이터베이스 연결 확립 오류: 이는 wp-config.php 파일의 사용자 이름과 비밀번호 정보가 잘못되었거나 localhost:3307의 데이터베이스 서버에 접속할 수 없음을 의미합니다.이는 호스트의 데이터베이스 서버가 다운되었음을 의미할 수 있습니다.

이미 확인했습니다. wordpress에서 데이터베이스 연결을 설정하는 중 오류가 발생했습니다.

  1. 올바른 사용자 이름과 비밀번호를 알고 계십니까?
    네, 를 사용하여 SQL Server Workbench에 로그인할 수 있습니다.rootcredentials가 동작하고 있습니다.
  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 코드를 실행했습니다(루트 사용자의 비밀번호를 루트 사용자의 비밀번호로 변경했을 뿐입니다).

<?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 오류: 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

MySQL Windows 서비스를 재시작했지만 오류는 그대로입니다.

또 뭐가 있을까요?

@treyBake의 코멘트대로 여기를 봐주세요.

기본적으로 MySQL 8은 기본 문자 집합을 utfmb4로 변경했으며 일부 클라이언트에서 오류가 발생했습니다.MySQL Server 5.6으로 다운그레이드했더니 문제가 해결되었습니다.

여기서 잠재적인 해결책을 찾아보세요.

PDO::_construct(): 서버가 클라이언트에 알 수 없는 문자 집합(255)을 보냈습니다.개발자에게 보고해 주세요.

기본적으로 DB와 스크립트가 모두 동일한 문자 집합(가능하면 utf-8)을 사용하는지 확인해야 합니다.

업데이트: 다음 항목도 참조하십시오.http://php.net/manual/en/mysqli.set-charset.php

언급URL : https://stackoverflow.com/questions/53979429/wordpress-error-establishing-a-mysql-database-connection-iis10