代码之家  ›  专栏  ›  技术社区  ›  Adam

建立MySQL数据库连接时出错iis10

  •  9
  • Adam  · 技术社区  · 7 年前

    我正在尝试在本地的Windows10机器上安装带有MySQL的Wordpress。 我得到这个错误:

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

    我已经查过了: Error establishing a database connection on wordpress

    1. 你确定你有正确的用户名和密码吗?
      是的,我可以使用 root 凭证,所以这是有效的
    2. 您确定键入了正确的主机名吗?
      这就是我在下面要做的
    3. 您确定数据库服务器正在运行吗?
      是的,签入了MySQLWorkbench,它正在运行

    我查过这个问题 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端口上运行。在工作台中,我看到我的数据库正在运行。 我还为用户添加了所有特权 在我的数据库架构上。我的用户 Limit to hosts matching 设置为 localhost .

    更新2

    然后我运行这个PHP代码 here (我刚将根用户的密码更改为根用户的密码):

    <?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
    我检查过了 here . 我刚刚有一个 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
    

    我重新启动了MySQLWindows服务,但错误仍然存在。

    我还可以试试什么?

    2 回复  |  直到 7 年前
        1
  •  4
  •   Adam    7 年前

    正如@treybake所评论的,请参阅 here .

    基本上,MySQL8将默认字符集改为utfmb4,现在有些客户机出现了错误。我降级到MySQLServer5.6,问题解决了。

        2
  •  1
  •   Eriks Klotins    7 年前

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

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

    实际上,您必须确保db和脚本使用相同的字符集,最好是utf-8

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

    推荐文章