“服务器发送的字符集(255)对客户端未知”将MySQL字符集设置为utf8 w /o /etc/my.cnf?

2022-08-31 00:36:37

我正在尝试从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():客户端未知的服务器发送字符集(255)。请向开发者举报

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

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

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

那么,如何将MySQL 8的默认字符集更改为utf8,而无需使用/etc/my.cnf?


答案 1

为了澄清答案:

  1. 创建一个在文件夹中调用的文件。my.cnf/etc/

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

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

    [mysql]
    默认字符集 = utf8

    [mysqld]
    归类服务器 = utf8_unicode_ci
    字符集服务器 = utf8
    default_authentication_plugin = mysql_native_password

最后,重新启动mysql,一切都应该没问题!如果仍有问题,请尝试将 PHP 升级到更高版本。


答案 2

我也有这个问题。问题是因为我运行的是旧版本的PHP(5.6),一旦我升级到PHP 7.4,错误就消失了。

这是我在Amazon Linux 2上,升级命令是:

amazon-linux-extras install php7.4

我发现许多版本的RedHat / CentOS默认带有PHP 5.6,而我能够将它们升级到最新PHP的最简单方法是在此处使用remi的存储库(https://rpms.remirepo.net/)


推荐