首页 > 解决方案 > “服务器向客户端发送未知字符集 (255)” 将 MySQL 字符集设置为 utf8 w/o /etc/my.cnf?

问题描述

我正在尝试从 phpMyAdmin 连接到 MySQL 数据库。但是当我输入用户名和密码时,我收到两条错误消息:

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

mysqli_real_connect(): (HY000/2054): Server sent charset unknown to the client. Please, report to the developers

我正在使用 MySQL 8.0.11 和 phpMyAdmin 4.8.2

我找到了类似问题的答案: PDO::__construct(): Server sent charset (255) unknown to the client。请向开发人员报告

这是重要的部分:“MySQL 8将默认字符集更改为utfmb4。但是有些客户端不知道这个字符集。因此,当服务器向客户端报告其默认字符集时,客户端不知道服务器的含义,它会引发此错误。”

给出的解决方案是通过在 /etc/my.cnf 中添加几行并重新启动 mysqld 将默认字符集更改回 utf8。

我的问题是 /etc/my.cnf 在我的文件中的任何地方都不存在,所以我无法在那里更改默认字符集。我查看的所有其他地方最终都引用了 /my.cnf 或引用了旧版本。

那么,如何在没有 /etc/my.cnf for MySQL 8 的情况下将默认字符集更改为 utf8?

标签: phpmysqlpdoutf-8

解决方案


为了澄清答案:

  1. my.cnf在您的文件夹中创建一个名为的/etc/文件。

  2. 现在将以下文本添加到/etc/my.cnf

    [客户端]
    默认字符集=utf8

    [mysql]
    默认字符集=utf8

    [mysqld]
    排序服务器 = utf8_unicode_ci
    字符集服务器 = utf8
    default_authentication_plugin = mysql_native_password

最后,重启mysql,一切都会好起来的!如果仍有问题,请尝试将 PHP 升级到更高版本。


推荐阅读