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

时间:2018-06-26 21:13:52

标签: php mysql pdo utf-8

我正在尝试从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. Please, report to the developers

这是重要的部分:“ MySQL 8将默认字符集更改为utfmb4。但是某些客户端不知道此字符集。因此,当服务器向客户端报告其默认字符集时,客户端不知道该字符集是什么。服务器的意思是,它将引发此错误。“

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

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

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

3 个答案:

答案 0 :(得分:2)

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

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

amazon-linux-extras install php7.4

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

答案 1 :(得分:1)

要弄清答案:

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

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

    [客户]
    default-character-set = utf8

    [mysql]
    default-character-set = utf8

    [mysqld]
    整理服务器= utf8_unicode_ci
    字符集服务器= utf8
    default_authentication_plugin = mysql_native_password

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

答案 2 :(得分:0)

重新安装MySQL 8,然后在安装时选择“身份验证”的第二种方法“使用旧版身份验证方法(保持MySQL 5.x兼容性)”。