WordPress建立MySQL数据库连接IIS10时出错[重复]

Posted

技术标签:

【中文标题】WordPress建立MySQL数据库连接IIS10时出错[重复]【英文标题】:WordPress Error establishing a MySQL database connection IIS10 [duplicate] 【发布时间】:2019-05-27 12:18:16 【问题描述】:

我正在尝试在本地 Windows 10 机器上使用 mysql 设置 WordPress。 我收到此错误:

建立数据库连接时出错 这要么意味着 wp-config.php 文件中的用户名和密码信息不正确,要么我们无法联系 localhost:3307 上的数据库服务器。这可能意味着您主机的数据库服务器已关闭。

我已经在这里查看过:Error establishing a database connection on wordpress

    您确定您的用户名和密码正确吗? 是的,我可以使用 root 凭据登录到 SQL Server Workbench,这样就可以了 您确定输入了正确的主机名吗? 这就是我在下面尝试的方法 您确定数据库服务器正在运行吗? 是的,已签入 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

然后我运行了这个我发现here 的 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 错误:SQLSTATE[HY000] [2054] 服务器向客户端发送未知字符集。请向开发人员报告

更新 3

然后我运行查询:SELECT default_character_set_name FROM information_schema.SCHEMATA S WHERE schema_name = "myDB";,它返回 utf8,因此与我的 wp-config.php 中定义的字符集相同。

更新 4 我检查了here。我的C:\Program Files\MySQL\MySQL Server 8.0\etc 文件夹中只有一个mysqlrouter.conf.sample,所以我添加了一个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 服务,但错误依旧。

我还能尝试什么?

【问题讨论】:

您的主机似乎不是问题...将其留给本地主机。确保 DB_NAME、DB_USER、DB_PASSWORD 定义明确。可能是其中一个类型? 你一直覆盖那些,所以只有最后一个生效。 大声笑,我很确定他只是在列出他尝试过的东西 @PatrickSimard:我确实列出了我尝试过的内容:-),我还重新检查了名称/用户/密码,并将它们复制到工作台中进行测试,它在那里工作,所以没有拼写错误。还能是什么?如果这很重要,我会将 MySQL 作为 Windows 服务运行。 这个帮助:***.com/questions/43437490/… ? 【参考方案1】:

在这里寻找潜在的解决方案:

PDO::__construct(): Server sent charset (255) unknown to the client. Please, report to the developers

本质上,您必须确保数据库和脚本都使用相同的字符集,最好是 utf-8

更新: 另请参阅:http://php.net/manual/en/mysqli.set-charset.php

【讨论】:

我建议不要管 wp 并尝试使用独立脚本解决问题。你检查过你的 MySQL 连接字符集吗? 那是我在更新 3 下尝试的,对吧?它已经说 utf8。 我不确定 wp-config 究竟如何处理字符集。这就是为什么我建议使用您可以完全控制的独立脚本。重要的是,脚本字符集、连接字符集和数据库字符集必须相同才能正常工作。【参考方案2】:

正如@treyBake 所评论的,请参阅here。

基本上 MySQL 8 将默认字符集更改为 utfmb4,现在一些客户端出现错误。我降级到 MySQL Server 5.6,问题就消失了。

【讨论】:

以上是关于WordPress建立MySQL数据库连接IIS10时出错[重复]的主要内容,如果未能解决你的问题,请参考以下文章

《Web集群实战》第6章MySQL搭建WordPress遇到“建立数据库连接时出错”的问题

如何修复 WordPress 中的 MySQL 服务器已消失错误。错误建立了数据库连接

为啥wordpress建立数据库连接时出错

如何从 wordpress docker 建立数据库连接

建立数据库连接错误,在win系统的腾讯云主机上安装wordpress显示建立数据库连接错误。

优胜美地升级后本地 WordPress 环境中“建立数据库连接时出错”